{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ML_in_Finance-Deep-Classifiers\n",
    "# Author: Matthew Dixon\n",
    "# Version: 1.0 (24.7.2019)\n",
    "# License: MIT\n",
    "# Email: matthew.dixon@iit.edu\n",
    "# Notes: tested on Mac OS X with Python 3..9 and the following packages:\n",
    "# numpy=1.18.1, keras=2.3.1, tensorflow=2.0.0, scikit-learn=0.22.1, matplotlib=3.0.3\n",
    "# Citation: Please cite the following reference if this notebook is used for research purposes:\n",
    "# Dixon M.F., Halperin I. and P. Bilokon, Machine Learning in Finance: From Theory to Practice, Springer Graduate textbook Series, 2020. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from sklearn.datasets import make_moons\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Overview\n",
    "\n",
    "This notebook demonstrates the configuration and properties of feed forward neural networks. We will investigate how the perceptron units transform the input space. Specifically, we shall study the fitted weights and plot the separating hyperplanes, starting with no hidden layers, adding a hidden layer and then two hidden layers. We shall also observe the effect of changing the number of perceptron units in a layer.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "# Preliminaries\n",
    "\n",
    "##  Load the standard dataset and other preliminaries"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The half-moons dataset is a classic classification problem consisting of two classes arranged in arcs, overlapping in each of the input space's two dimensions.\n",
    "\n",
    "Note that we shall not partition the data into training and testing sets, since our goal is to understand how adding hidden layers transforms the input space, not to evaluate the models' classification performance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, Y = make_moons(n_samples=100, noise=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "colors = np.array(['#377eb8', '#ff7f00'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Function definitions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Define the baseline neural network binary classifier without a hidden layer (i.e. a logit model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_logit():\n",
    "    # Create model\n",
    "    model = Sequential()\n",
    "    # Add the only layer, transforming the 2D input to the 1D output\n",
    "    model.add(Dense(1, input_dim=2, kernel_initializer='normal', activation='sigmoid')) \n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This function will display the decision boundary for the model, over the region\n",
    "spanned by its inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_decision_surface(X, model, h):\n",
    "    # Get the upper and lower bounds of the two input dimensions\n",
    "    x_min, x_max = X[:, 0].min(), X[:, 0].max()\n",
    "    y_min, y_max = X[:, 1].min(), X[:, 1].max()\n",
    "    \n",
    "    # Create the mesh over the input space\n",
    "    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
    "                         np.arange(y_min, y_max, h))\n",
    "    \n",
    "    # Plot the decision boundary. For that, we will assign a color to each\n",
    "    # point in the mesh [x_min, m_max]x[y_min, y_max].\n",
    "    y_pred = model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
    "    \n",
    "    # Quantise the model output to the integers 0 & 1\n",
    "    g_pred = np.array(y_pred > 0.5, dtype=np.integer)\n",
    "    \n",
    "    # Plot the inputs and decision boundary on the input space\n",
    "    plt.scatter(xx.ravel(), yy.ravel(), s=10, color=colors[g_pred.ravel()])    \n",
    "    plt.scatter(X[:, 0], X[:, 1], s=30, color=colors[Y], edgecolors='black')\n",
    "    plt.xlabel(r'$X_1$')\n",
    "    plt.ylabel(r'$X_2$')\n",
    "    \n",
    "    return plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Fix NumPy and TensorFlow's random seeds for reproducibility"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "seed = 55\n",
    "np.random.seed(seed)\n",
    "tf.random.set_seed(seed)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 1a: Evaluate the logit model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First we use the helper function we defined above to create the model, and fit it to the training data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/300\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.7054 - accuracy: 0.3000\n",
      "Epoch 2/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.6800 - accuracy: 0.7900\n",
      "Epoch 3/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.6568 - accuracy: 0.8600\n",
      "Epoch 4/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6349 - accuracy: 0.8500\n",
      "Epoch 5/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.6146 - accuracy: 0.8400\n",
      "Epoch 6/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5956 - accuracy: 0.8400\n",
      "Epoch 7/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5780 - accuracy: 0.8400\n",
      "Epoch 8/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5614 - accuracy: 0.8400\n",
      "Epoch 9/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5458 - accuracy: 0.8300\n",
      "Epoch 10/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.5315 - accuracy: 0.8300\n",
      "Epoch 11/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5179 - accuracy: 0.8300\n",
      "Epoch 12/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5054 - accuracy: 0.8300\n",
      "Epoch 13/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4937 - accuracy: 0.8300\n",
      "Epoch 14/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.4828 - accuracy: 0.8300\n",
      "Epoch 15/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4721 - accuracy: 0.8300\n",
      "Epoch 16/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4627 - accuracy: 0.8400\n",
      "Epoch 17/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4535 - accuracy: 0.8300\n",
      "Epoch 18/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4449 - accuracy: 0.8300\n",
      "Epoch 19/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4370 - accuracy: 0.8400\n",
      "Epoch 20/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4293 - accuracy: 0.8400\n",
      "Epoch 21/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4223 - accuracy: 0.8400\n",
      "Epoch 22/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4154 - accuracy: 0.8400\n",
      "Epoch 23/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4093 - accuracy: 0.8400\n",
      "Epoch 24/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.4033 - accuracy: 0.8400\n",
      "Epoch 25/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3977 - accuracy: 0.8400\n",
      "Epoch 26/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3923 - accuracy: 0.8400\n",
      "Epoch 27/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3873 - accuracy: 0.8400\n",
      "Epoch 28/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3826 - accuracy: 0.8400\n",
      "Epoch 29/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3778 - accuracy: 0.8400\n",
      "Epoch 30/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3736 - accuracy: 0.8400\n",
      "Epoch 31/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3696 - accuracy: 0.8400\n",
      "Epoch 32/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3657 - accuracy: 0.8400\n",
      "Epoch 33/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3619 - accuracy: 0.8400\n",
      "Epoch 34/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3585 - accuracy: 0.8400\n",
      "Epoch 35/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3551 - accuracy: 0.8400\n",
      "Epoch 36/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3519 - accuracy: 0.8400\n",
      "Epoch 37/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3489 - accuracy: 0.8400\n",
      "Epoch 38/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3460 - accuracy: 0.8400\n",
      "Epoch 39/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3432 - accuracy: 0.8400\n",
      "Epoch 40/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3406 - accuracy: 0.8500\n",
      "Epoch 41/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3380 - accuracy: 0.8500\n",
      "Epoch 42/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3357 - accuracy: 0.8500\n",
      "Epoch 43/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3334 - accuracy: 0.8500\n",
      "Epoch 44/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3311 - accuracy: 0.8500\n",
      "Epoch 45/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3290 - accuracy: 0.8500\n",
      "Epoch 46/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3270 - accuracy: 0.8500\n",
      "Epoch 47/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3251 - accuracy: 0.8500\n",
      "Epoch 48/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3232 - accuracy: 0.8500\n",
      "Epoch 49/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3213 - accuracy: 0.8500\n",
      "Epoch 50/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3197 - accuracy: 0.8500\n",
      "Epoch 51/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3181 - accuracy: 0.8500\n",
      "Epoch 52/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3164 - accuracy: 0.8500\n",
      "Epoch 53/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3148 - accuracy: 0.8500\n",
      "Epoch 54/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3135 - accuracy: 0.8500\n",
      "Epoch 55/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3120 - accuracy: 0.8500\n",
      "Epoch 56/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3107 - accuracy: 0.8500\n",
      "Epoch 57/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3093 - accuracy: 0.8500\n",
      "Epoch 58/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3081 - accuracy: 0.8500\n",
      "Epoch 59/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3069 - accuracy: 0.8500\n",
      "Epoch 60/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3057 - accuracy: 0.8500\n",
      "Epoch 61/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3046 - accuracy: 0.8500\n",
      "Epoch 62/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3035 - accuracy: 0.8500\n",
      "Epoch 63/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3024 - accuracy: 0.8500\n",
      "Epoch 64/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3015 - accuracy: 0.8500\n",
      "Epoch 65/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3004 - accuracy: 0.8500\n",
      "Epoch 66/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2996 - accuracy: 0.8500\n",
      "Epoch 67/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2986 - accuracy: 0.8500\n",
      "Epoch 68/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2977 - accuracy: 0.8500\n",
      "Epoch 69/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2968 - accuracy: 0.8500\n",
      "Epoch 70/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2960 - accuracy: 0.8500\n",
      "Epoch 71/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2951 - accuracy: 0.8500\n",
      "Epoch 72/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2944 - accuracy: 0.8500\n",
      "Epoch 73/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2936 - accuracy: 0.8500\n",
      "Epoch 74/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2930 - accuracy: 0.8500\n",
      "Epoch 75/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2921 - accuracy: 0.8500\n",
      "Epoch 76/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2915 - accuracy: 0.8500\n",
      "Epoch 77/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2908 - accuracy: 0.8600\n",
      "Epoch 78/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2902 - accuracy: 0.8500\n",
      "Epoch 79/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2894 - accuracy: 0.8600\n",
      "Epoch 80/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2889 - accuracy: 0.8600\n",
      "Epoch 81/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2883 - accuracy: 0.8600\n",
      "Epoch 82/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2877 - accuracy: 0.8700\n",
      "Epoch 83/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2875 - accuracy: 0.8600\n",
      "Epoch 84/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2866 - accuracy: 0.8600\n",
      "Epoch 85/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2861 - accuracy: 0.8700\n",
      "Epoch 86/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2857 - accuracy: 0.8600\n",
      "Epoch 87/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2850 - accuracy: 0.8700\n",
      "Epoch 88/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2847 - accuracy: 0.8700\n",
      "Epoch 89/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2841 - accuracy: 0.8700\n",
      "Epoch 90/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2836 - accuracy: 0.8700\n",
      "Epoch 91/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2831 - accuracy: 0.8700\n",
      "Epoch 92/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2829 - accuracy: 0.8700\n",
      "Epoch 93/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2825 - accuracy: 0.8700\n",
      "Epoch 94/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2818 - accuracy: 0.8700\n",
      "Epoch 95/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2814 - accuracy: 0.8700\n",
      "Epoch 96/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2811 - accuracy: 0.8700\n",
      "Epoch 97/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2807 - accuracy: 0.8700\n",
      "Epoch 98/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2803 - accuracy: 0.8700\n",
      "Epoch 99/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2799 - accuracy: 0.8700\n",
      "Epoch 100/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2796 - accuracy: 0.8700\n",
      "Epoch 101/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2793 - accuracy: 0.8700\n",
      "Epoch 102/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2790 - accuracy: 0.8700\n",
      "Epoch 103/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2785 - accuracy: 0.8700\n",
      "Epoch 104/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2782 - accuracy: 0.8700\n",
      "Epoch 105/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2779 - accuracy: 0.8700\n",
      "Epoch 106/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2775 - accuracy: 0.8700\n",
      "Epoch 107/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2772 - accuracy: 0.8700\n",
      "Epoch 108/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2769 - accuracy: 0.8700\n",
      "Epoch 109/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2766 - accuracy: 0.8700\n",
      "Epoch 110/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2764 - accuracy: 0.8700\n",
      "Epoch 111/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2762 - accuracy: 0.8700\n",
      "Epoch 112/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2759 - accuracy: 0.8700\n",
      "Epoch 113/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2755 - accuracy: 0.8700\n",
      "Epoch 114/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2752 - accuracy: 0.8700\n",
      "Epoch 115/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2751 - accuracy: 0.8700\n",
      "Epoch 116/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2749 - accuracy: 0.8700\n",
      "Epoch 117/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2744 - accuracy: 0.8700\n",
      "Epoch 118/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2746 - accuracy: 0.8700\n",
      "Epoch 119/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2740 - accuracy: 0.8700\n",
      "Epoch 120/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2737 - accuracy: 0.8700\n",
      "Epoch 121/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2737 - accuracy: 0.8700\n",
      "Epoch 122/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2733 - accuracy: 0.8700\n",
      "Epoch 123/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2732 - accuracy: 0.8700\n",
      "Epoch 124/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2729 - accuracy: 0.8700\n",
      "Epoch 125/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2728 - accuracy: 0.8700\n",
      "Epoch 126/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2724 - accuracy: 0.8700\n",
      "Epoch 127/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2722 - accuracy: 0.8700\n",
      "Epoch 128/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2721 - accuracy: 0.8700\n",
      "Epoch 129/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2720 - accuracy: 0.8700\n",
      "Epoch 130/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2717 - accuracy: 0.8700\n",
      "Epoch 131/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2715 - accuracy: 0.8700\n",
      "Epoch 132/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2715 - accuracy: 0.8700\n",
      "Epoch 133/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2714 - accuracy: 0.8700\n",
      "Epoch 134/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2710 - accuracy: 0.8700\n",
      "Epoch 135/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2708 - accuracy: 0.8700\n",
      "Epoch 136/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2708 - accuracy: 0.8700\n",
      "Epoch 137/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2706 - accuracy: 0.8700\n",
      "Epoch 138/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2703 - accuracy: 0.8700\n",
      "Epoch 139/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2702 - accuracy: 0.8700\n",
      "Epoch 140/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2700 - accuracy: 0.8700\n",
      "Epoch 141/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2700 - accuracy: 0.8700\n",
      "Epoch 142/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2699 - accuracy: 0.8700\n",
      "Epoch 143/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2695 - accuracy: 0.8700\n",
      "Epoch 144/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2695 - accuracy: 0.8700\n",
      "Epoch 145/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2692 - accuracy: 0.8700\n",
      "Epoch 146/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2691 - accuracy: 0.8700\n",
      "Epoch 147/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2690 - accuracy: 0.8700\n",
      "Epoch 148/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2688 - accuracy: 0.8700\n",
      "Epoch 149/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2687 - accuracy: 0.8700\n",
      "Epoch 150/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2685 - accuracy: 0.8700\n",
      "Epoch 151/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2684 - accuracy: 0.8700\n",
      "Epoch 152/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2685 - accuracy: 0.8700\n",
      "Epoch 153/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2681 - accuracy: 0.8700\n",
      "Epoch 154/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2680 - accuracy: 0.8700\n",
      "Epoch 155/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2682 - accuracy: 0.8700\n",
      "Epoch 156/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2678 - accuracy: 0.8700\n",
      "Epoch 157/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2677 - accuracy: 0.8700\n",
      "Epoch 158/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2678 - accuracy: 0.8700\n",
      "Epoch 159/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2675 - accuracy: 0.8700\n",
      "Epoch 160/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2673 - accuracy: 0.8700\n",
      "Epoch 161/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2672 - accuracy: 0.8700\n",
      "Epoch 162/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2671 - accuracy: 0.8700\n",
      "Epoch 163/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2670 - accuracy: 0.8700\n",
      "Epoch 164/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2669 - accuracy: 0.8700\n",
      "Epoch 165/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2668 - accuracy: 0.8700\n",
      "Epoch 166/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2669 - accuracy: 0.8700\n",
      "Epoch 167/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2666 - accuracy: 0.8700\n",
      "Epoch 168/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2665 - accuracy: 0.8700\n",
      "Epoch 169/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2665 - accuracy: 0.8700\n",
      "Epoch 170/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2663 - accuracy: 0.8700\n",
      "Epoch 171/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2663 - accuracy: 0.8700\n",
      "Epoch 172/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2663 - accuracy: 0.8700\n",
      "Epoch 173/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2660 - accuracy: 0.8700\n",
      "Epoch 174/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2659 - accuracy: 0.8700\n",
      "Epoch 175/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2661 - accuracy: 0.8700\n",
      "Epoch 176/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2658 - accuracy: 0.8700\n",
      "Epoch 177/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2657 - accuracy: 0.8700\n",
      "Epoch 178/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2658 - accuracy: 0.8700\n",
      "Epoch 179/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2659 - accuracy: 0.8700\n",
      "Epoch 180/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2656 - accuracy: 0.8700\n",
      "Epoch 181/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2655 - accuracy: 0.8700\n",
      "Epoch 182/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2653 - accuracy: 0.8700\n",
      "Epoch 183/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2652 - accuracy: 0.8700\n",
      "Epoch 184/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2651 - accuracy: 0.8700\n",
      "Epoch 185/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2650 - accuracy: 0.8700\n",
      "Epoch 186/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2649 - accuracy: 0.8700\n",
      "Epoch 187/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2649 - accuracy: 0.8700\n",
      "Epoch 188/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2650 - accuracy: 0.8700\n",
      "Epoch 189/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2647 - accuracy: 0.8700\n",
      "Epoch 190/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2647 - accuracy: 0.8700\n",
      "Epoch 191/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2647 - accuracy: 0.8700\n",
      "Epoch 192/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2646 - accuracy: 0.8700\n",
      "Epoch 193/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2647 - accuracy: 0.8700\n",
      "Epoch 194/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2644 - accuracy: 0.8700\n",
      "Epoch 195/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2644 - accuracy: 0.8700\n",
      "Epoch 196/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2645 - accuracy: 0.8700\n",
      "Epoch 197/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2643 - accuracy: 0.8700\n",
      "Epoch 198/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2642 - accuracy: 0.8800\n",
      "Epoch 199/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2642 - accuracy: 0.8700\n",
      "Epoch 200/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2642 - accuracy: 0.8700\n",
      "Epoch 201/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 202/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2640 - accuracy: 0.8700\n",
      "Epoch 203/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2639 - accuracy: 0.8700\n",
      "Epoch 204/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2638 - accuracy: 0.8800\n",
      "Epoch 205/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2639 - accuracy: 0.8800\n",
      "Epoch 206/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 207/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 208/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 209/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 210/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 211/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 212/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 213/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 214/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2634 - accuracy: 0.8800: 0s - loss: 0.3280 - \n",
      "Epoch 215/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 216/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 217/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 218/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 219/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 220/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 221/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 222/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 223/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 224/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 225/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 226/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 227/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 228/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 229/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 230/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 231/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 232/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 233/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 234/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 235/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 236/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 237/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 238/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 239/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 240/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 241/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 242/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 243/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 244/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 245/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 246/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 247/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 248/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 249/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 250/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 251/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 252/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 253/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 254/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 255/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 256/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 257/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 258/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 259/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 260/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 261/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 262/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 263/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 264/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 265/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 266/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 267/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 268/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 269/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 270/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 271/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 272/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 273/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 274/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 275/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 276/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 277/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 278/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 279/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 280/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 281/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 282/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 283/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 284/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 285/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 286/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 287/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2613 - accuracy: 0.8800\n",
      "Epoch 288/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 289/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 290/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 291/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 292/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2611 - accuracy: 0.8800\n",
      "Epoch 293/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2612 - accuracy: 0.8800\n",
      "Epoch 294/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2611 - accuracy: 0.8800\n",
      "Epoch 295/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 296/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2611 - accuracy: 0.8800\n",
      "Epoch 297/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2610 - accuracy: 0.8800\n",
      "Epoch 298/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2611 - accuracy: 0.8800\n",
      "Epoch 299/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2609 - accuracy: 0.8800\n",
      "Epoch 300/300\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2610 - accuracy: 0.8800\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x13060d048>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = create_logit()\n",
    "model.fit(X, Y, epochs=300, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Predict classes of training points"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now predict the class label for each of the inputs in `X`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = model.predict(X)\n",
    "# Assigning outputs below 0.5 to class 0; above to class 1\n",
    "g_pred = (y_pred > 0.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Analysis of the logit model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We replicate the neural network layer: multiplying the input by the weights, adding the bias, and applying the activation function. We compare the result with the Keras output to verify that they are the same"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def logit(x):\n",
    "    return 1 / (1 + np.exp(-x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "W1, b1 = model.layers[0].get_weights()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.14226282] [0.14226276]\n",
      "[0.8025234] [0.8025234]\n",
      "[0.01515974] [0.01515976]\n",
      "[0.98722449] [0.9872245]\n",
      "[0.80664518] [0.80664515]\n",
      "[0.97227402] [0.97227407]\n",
      "[0.00910157] [0.00910163]\n",
      "[0.02109898] [0.02109897]\n",
      "[0.60369796] [0.60369796]\n",
      "[0.04010406] [0.04010406]\n",
      "[0.99011441] [0.9901144]\n",
      "[0.16709239] [0.16709241]\n",
      "[0.98839439] [0.9883943]\n",
      "[0.36998745] [0.3699875]\n",
      "[0.94607961] [0.9460796]\n",
      "[0.91109507] [0.9110951]\n",
      "[0.0177203] [0.01772031]\n",
      "[0.99009642] [0.9900964]\n",
      "[0.3019389] [0.30193895]\n",
      "[0.7469081] [0.7469081]\n",
      "[0.05083408] [0.05083403]\n",
      "[0.53689758] [0.53689754]\n",
      "[0.01322194] [0.01322192]\n",
      "[0.03147973] [0.03147972]\n",
      "[0.01176502] [0.011765]\n",
      "[0.1845886] [0.18458861]\n",
      "[0.00939657] [0.00939661]\n",
      "[0.95737972] [0.9573797]\n",
      "[0.22023748] [0.2202375]\n",
      "[0.98831067] [0.9883107]\n",
      "[0.68019317] [0.6801932]\n",
      "[0.00991398] [0.00991395]\n",
      "[0.85051143] [0.85051143]\n",
      "[0.13918925] [0.13918921]\n",
      "[0.45165187] [0.45165187]\n",
      "[0.9833405] [0.98334044]\n",
      "[0.69777061] [0.6977706]\n",
      "[0.12509968] [0.12509966]\n",
      "[0.00996792] [0.00996795]\n",
      "[0.82097299] [0.820973]\n",
      "[0.98050049] [0.98050046]\n",
      "[0.98979427] [0.98979425]\n",
      "[0.00943075] [0.00943077]\n",
      "[0.04981975] [0.04981974]\n",
      "[0.36001011] [0.3600101]\n",
      "[0.75196039] [0.7519604]\n",
      "[0.01534658] [0.01534659]\n",
      "[0.23764909] [0.23764911]\n",
      "[0.44243602] [0.44243604]\n",
      "[0.97675494] [0.97675496]\n",
      "[0.98549123] [0.9854912]\n",
      "[0.18067525] [0.18067521]\n",
      "[0.02599423] [0.02599424]\n",
      "[0.93104557] [0.93104553]\n",
      "[0.10697444] [0.10697442]\n",
      "[0.98564426] [0.9856442]\n",
      "[0.29617759] [0.29617757]\n",
      "[0.23280898] [0.23280895]\n",
      "[0.92959256] [0.9295926]\n",
      "[0.01187052] [0.0118705]\n",
      "[0.02556359] [0.0255636]\n",
      "[0.95655842] [0.9565584]\n",
      "[0.98923279] [0.9892328]\n",
      "[0.06513929] [0.06513926]\n",
      "[0.98917425] [0.9891743]\n",
      "[0.88226813] [0.88226813]\n",
      "[0.98354306] [0.9835431]\n",
      "[0.86548063] [0.86548066]\n",
      "[0.02142444] [0.02142441]\n",
      "[0.06378753] [0.06378746]\n",
      "[0.68614212] [0.6861421]\n",
      "[0.01068665] [0.0106867]\n",
      "[0.9091719] [0.90917194]\n",
      "[0.08237537] [0.08237538]\n",
      "[0.98711004] [0.98711]\n",
      "[0.98975717] [0.9897571]\n",
      "[0.01076381] [0.01076385]\n",
      "[0.971808] [0.97180796]\n",
      "[0.61036539] [0.6103654]\n",
      "[0.88479094] [0.88479096]\n",
      "[0.76510252] [0.7651025]\n",
      "[0.08417034] [0.08417034]\n",
      "[0.37652607] [0.37652606]\n",
      "[0.03934327] [0.0393433]\n",
      "[0.01336305] [0.01336306]\n",
      "[0.03205131] [0.03205135]\n",
      "[0.9902131] [0.99021316]\n",
      "[0.01796686] [0.0179669]\n",
      "[0.62055344] [0.6205535]\n",
      "[0.96587497] [0.96587497]\n",
      "[0.98076767] [0.9807677]\n",
      "[0.28493214] [0.28493214]\n",
      "[0.00901064] [0.00901067]\n",
      "[0.96525708] [0.9652571]\n",
      "[0.84725078] [0.8472507]\n",
      "[0.00911815] [0.00911814]\n",
      "[0.52761596] [0.52761596]\n",
      "[0.10933921] [0.10933921]\n",
      "[0.94498662] [0.94498664]\n",
      "[0.97710742] [0.9771074]\n"
     ]
    }
   ],
   "source": [
    "for i in range(0, len(X)):\n",
    "    x = X[i]\n",
    "    y_hat = logit(np.matmul(np.transpose(W1), x) + b1)\n",
    "    print(y_hat, y_pred[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot the separating hyperplanes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's construct the separating hyperplane from the equation of the line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_min = min(X[:,0])\n",
    "x_max = max(X[:,0])\n",
    "\n",
    "y1 = -(b1 + W1[0]*x_min) / W1[1]\n",
    "y2 = -(b1 + W1[0]*x_max) / W1[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEOCAYAAABIESrBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXd4XNW1t989Tb3bkmzJRe69F9xwt2WZBAjNOEBIACcESEgg9+YmfCQhgZAEuEkIIRBCvQkllGCw3LuNi9x7kbuaZfU2o2n7++PIRxpJbrJmzkja7/Posebso5kl68z8ztqrCSklCoVCoVC0BJPRBigUCoWi7aJERKFQKBQtRomIQqFQKFqMEhGFQqFQtBglIgqFQqFoMUpEFAqFQtFilIgoFAqFosUoEVEoFApFi1EiolAoFIoWo0REoVAoFC3GYrQB/qZTp06yZ8+eRpuhUCgUbYqdO3cWSSk7X+m8di8iPXv2ZMeOHUaboVAoFG0KIcSZqzlPbWcpFAqFosUoEVEoFApFi1EiolAoFIoWo0REoVAoFC1GiYhCoVAoWkzQiIgQ4k0hRKEQ4sAl1oUQ4s9CiGwhxD4hxKhA26gwhoIyO4UVjibHa2rdnC2qxun2GmCVQqGA4ErxfRv4C/DuJdbnAX3rvsYDr9b9q2jjVDlcLN6Vy8GcMgalxPD1UalEhVnJKanhv97fRU6JHYDeiZH87u6RdI4K4W+rj/PBljOYTAIBPDanH7eO7Y6Ukq3ZRazcX0CYzcwtY1Lpmxxt7C+oULRjRDDNWBdC9AS+lFIOaWbtNWCdlPL9usdHgWlSyvzLPeeYMWOkqhMJDs4VV7N0bx4Ol4eZg5MZnBpLeY2Te1/9ivIaF7VuLyEWE1FhVt753gQe+PtWzpc7uHiJmgX0TopiwYQe/P7LQzhc9R5IqNXEH+8dw5qDBXyxKxe7y4NJgM1i4qlbhjBrSBfKqp1k7skjv9zOuN4JTOrbGZNJGPS/oVAEN0KInVLKMVc6L5g8kSuRApxr8Din7thlRUQRHGw4Usj/+3gvbo/E65V8mnWO+6b0wunyUFrtxOXRlKLW7cVb4+Tl5UepqHHR8B7HI+FMUTX/t/m0j4AA1Lq8/OurU2zNLta3t7wSHC4vf/jyML06R7Loze243F5q3V6+3J3LyB5xvLBwlBISheI6aEsi0tw7vVk3SgixCFgE0L17d3/apGjE2eJqfv/FIfacKSUqzMp9k9O4Y3x3nv38ALUNPvgdLi9vbzhJr86RuoBcxOWRHMotRzTzFxdCNBsDkUBRpROLSeBstOZwe3j+y4NUO9z6BWN3eth9upStJ4pIiAzh918c4mh+BfGRNh6a3oevjUq9vv8IhaKDEDSB9asgB+jW4HEqkNfciVLK16WUY6SUYzp3vmLrF0UrUV3r5qG/b2Pn6RLcXklptZPX1hzn72uzqXV5mpxvNQsiwyyYG3kCJgGDUmIwm5penjHhVm4ZnUqI1XctzGpm1pAkvM3cVgjgWH5lkzsOu8vD5qMXePjN7RzMLcftlRRW1PJi5hFWHlAOrkJxNbQlEVkM3FeXpXUDUH6leIjCfxzOLeexd7LI+P1afvjuDo7lV7DmYAFOj9dnC8rh8vL5zpxmP9w9Xrh9bDdsFpPuZgrAZjHzrRt78cLCkUSGWogIMRMeYiY23MoLC0eyYEIPxvdKIMRiIiLEgs1i4qaRKSy4oQcDukRjs9Rf1qFWE3dP6EmnqJAmrx9qNXG+3NHEE3K4PLy57gQOp4dXVhzj6y+u544/beSjrWfwNveLKBQdmKAJrAsh3gemAZ2A88AvACuAlPJvQgiBlr2VDtQA35ZSXjFirgLrrc+J85U88PdtOBp4F6FWM7eMTuXf287Q6DMZi0nw9VEpLNmbp29pWc2CfsnRvPHQeE4UVvHqquMcK6igb1IUD8/qq2dUOd1edp8pwWISDO8eh8VcLxBniqo5W1xNv+QokmLCAHA4Pby94QQr9hcQYjWxYEIPvj4qlRX78/nt4oN6LMUkICrUypT+nflyT1OHNjbcSlrnSA7mluvbZ6FWE7eO6cYP0we03n+mQhGkXG1gPWhExF8oEbl+8uvqNPokRhERauEXn+xj5f58H+/CbBJM6JPAjlMlPkFvIWBkjzhe/tZY3tt0ik+yzuJ0e5k1OJnvz+pHRGjgwnIr9+fzxroTFFfVMqpnHD+cO4AThVX84pN92J31gmgWMK5PJ3afLmkSwA+xmFj6X9MJs5k5XlCJxyvp1yW6yZacQtHWaY/ZWYoA43R7+X//3suW7CKsZhNuj5fH5vTj9IXqJttTHq+k3O4mfVhXlu3Lw1mXrmu1mPnvrw3GbBLcf2Mv7r+xlzG/DDB7aBdmD+3ic6xLbBhj0uLZcbIEh9tDqNVMRIiF6QOT2He2tMlzCCE4lFvOc4sPUlrtRABhNjMv3TOa/l1UPYqi46E8EcUleW31cf711WlqG2RDhVhNzByUzMoD+T6xBJvFxL2T0nhwem8O5paTdaKY+MgQZg1ODqi30RKklOw6XcLes2V0iQ1j+sAkKuwubv/zxiaZYFGhFuIirJwrsfvEfuIibHzxxFSf7TaFoi2jPBHFNeNweii3O+kUFYrZJPhyd66PgIDmnYRaTcRF2Ci3u6h1aY9jI2zcNaEHQgiGpMYyJDXWoN/i2hFCMDotgdFpCfqxUJuZu27owb+3ncHh8mISYLWYeGBab/62+jiN771qXR4O5JQzokcc5TVOPF5JfGTTYL5C0d5QIqLA65X8ZeUxPtl+FtC2Z35285Dm6zSAEJuZ9x+ZzJe7czmcV87g1Bjmj0ghPKR9XU6PzO7HDX0SWLGvgFCbia+PSsVmMfHq6uPNnl/pcPHwm9s5kFMGaNX1z905gq5xYYE0W6EIKGo7S8EHW07zt9XHm7QRuWlkCl/sym2ynfX3B8bTr4Pu/0spWfjKZk4XVft4I/ERNpJjQzmarwXbQcsA6xIbxsc/nIJoTpEViiDmarez1Aaugo+2nW2SheTySGxmE5P7d8ZmMRERYibUauLxuf07rICAtvX1wsJRpMaHE2o1E2YzkxgdwlO3DObE+SpdQEBru1JS7eRIXoWBFisU/qV97T8orojb42XD0UKO51fSKymSaQOSmq0m93oltW4vz945ggsVDgorHPRKjCTMpi6ZlPhwPnpsMqcuVOPxeumdGMWZoupmvQ2TENhdHo7lV7DxaCHhNguzh3ZptvhRoWiLqE+EDoTD6WHRP7ZxrqQGu9NDmM3MG2uzmTIgkczdeTg9DbetzMwckgxA5+hQOkeHGmV2UCKEoFdipP64R6cIokItPgWYF9l1qoT3Np3C5fFiMZt4fU02L94zilE94wNpskLhF9R2Vgfik6xznCmq1gvr7E4P+aUOIkMs9E2OIsxmJiLEjM1i4o5x3dSH3DVgMgn+sHAkUXVtWiJCtK2un35tEO9uOqV1J5Zadpvd5eFXn+6nvccjFR0D5Yl0IDYdLWyasuvxknWymLe/O4HDeRXkl9kZnBJDcqzKKLpWBnSNYclPprPjZDFur2Rsr3g2HClstrNwaZWTkmonCSoNWNHGUSLSjjlfbmfzsSJCrSamDkgiOTYM09lSn2pzASTFhCKEYFBKDINSYgyztz1gs5iY2K++c3SnqEtsAwoIt5nZeaqY7PNV9EmKZFTPeJXFpWhzKBFppyzemcOLmYdBaMHdFzMP85P5g1h7qMAnEyvEauK+yca1ImnvjOwRR6foEHJL7HrmVojVRMbwrvzovV0cLajA7ZFYzIK+yVG8fN8YQqxmg61WKK4eFRNph5RVO3kh8zC1bi+1Li92p4fqWg+vr83mxW+Oom9yFDaLibTOETy/YCRDurWd6vK2hskkeO0745k+KIlQq9bO/psTe9I9IZzD+eXYnR5cHu1vdDSvgk+yzl35SRWKIEJ5Iu2QXWdKsJoFTrfv8aLKWrolRPDewxONMayDEhdh4zd3DPc5tugf23wmPYI2GnjNwQIWTuwZQOsUiutDeSLtkJgwa5PeTgBSQoSq8wgK4sJtzR+PaP64QhGsqE+UdsCeM6W8vOIoZ4qq6ZMUxaOz+xETbsPhsutBdJvFxNQBiUHfUbejsHBST7aeKPLxRkKtJr4xthsvZR5m5f58LGbt8b2T01R3YEXQonpntXGO5JXzvTe3N+p7Zealb47izQ0n2HWqBLNJkD68K09kDCRUBW2DhjUHC/jfpUcoqqwlISqEx+f259/bz3IotwJXXeFniNXE3KFd+NnNQwy2VtHRaJOt4IUQ6cCfADPwhpTy+Ubr3YF3gNi6c34qpcwMuKFBxNsbTjbZW3d5vCzbl8dfvjUWt8eLSQhMavJe0DFjcDLTByXp2VnZ56s4ml8vIAC1Li/L9ubz2Jz+RIVZDbRWoWieoPGRhRBm4BVgHjAIuFsIMajRaU8BH0kpRwILgL8G1srgI6fETmNf0uOV5JTUAGAxm5SABDFCCKwWE0IIzpfbmx2zazYLSqsblysqFMFB0IgIMA7IllKelFI6gQ+AmxudI4GLLWRjgLwA2heU3NAnAavZ94MnxGLihj6dDLJI0VIGpcT4TIu8iMUk1EwSRdASTNtZKUDDJPkcYHyjc34JrBBCPAZEALMCY1rwsGR3Lm+sO0F5jZMRPeJ5aHpvVh0ooKzGhcPlIcxqJjEmlNvGdTfaVMU1Eh8ZwgNTe/PWhhPUuryYTAKLSfBfNw3inY0n+WT7OZxuL9MGJfKDuQOIVttbiiAgmESkuT2XxrdldwNvSylfFEJMAN4TQgyRUvoEBYQQi4BFAN27t58P08W7cngp87AeRN+SfYGDuWX88+FJbDpWyPGCSgalxjBrcLKqem6jfOvGXoztncCqA/nYzGbmjejKh1vPsGRPrh77WrYvnyN5lbz38ATVJkVhOMEkIjlAtwaPU2m6XfUAkA4gpdwihAgFOgGFDU+SUr4OvA5adpa/DA40/1h3wicLS0pttvemY4XcMqbbZX5S0ZZo2MPM7nTz5e5cnA0aZ7o9ktzSGg7klDNUdRtQGEwwxUSygL5CiDQhhA0tcL640TlngZkAQoiBQChwIaBWGkhZM8FVh8vL+XKHAdYoAkGl3d2siy4EFFaov7vCeIJGRKSUbuBRYDlwGC0L66AQ4hkhxNfrTnsCeEgIsRd4H7hftvdClwYM7Rbb5AMlzGpmdJqa+9Fe6RQVQmQzBaJuj2SY8kIUQYAqNgxiqh1uVuzPJ6ekhuE94kiNC+O7b27H6dEaK4bZzNzQpxPP3Tlc7Y23Y7ZmF/HTD3bj8UrcXonNYuL+Kb2YOSSZlfsL8Hi9zBycTO+kKKNNVbQjrrbYUIlIkFJQZufbr2/F7nTjqBOMQSkx/Pr2oaw6cJ7CCgdjeycwrleCEpAOQH6ZneX78nE43UwblMS54hp+858DuL0SpMRiNvHD9P58Y2z7SSRRGEubrFhX1PPKymOU1zj13ld2p4dDueXsOl3GnTf0MNY4RcDpEhvG/Tdqc1+cbi/ffyvLZ0qlx+3lT8uOMmdoFyJDVeqvInAETUxE4cuOUyU+EwhBE5Jt2UXGGKQIGk5fqGr2uMVs4kheRYCtUXR0lIgEKZ2jms7etllMqnJZQUJUiLaN1Qi3x0ti9CXG8SoUfkKJSJDy4PQ+hFp9/zxWs4mvjUo1yCJFsJAQGcLk/p0JsdRfH1aziSHdYuneKcJAyxQdERVYDxKqHC7+9dVpNh+7QHJMGPdOSeNCRS1/W3WMwspaBqfE8KN5A1QGjgLQ4iJ/X3OcL3bn4pWSOUO7cu/kND7NOsvW7CK6xobzrRvTGNA1xmhTFW0UlZ1VR1sQEafbyz2vbqag1IHT40UANquJ3989kvG9VSNFxZVxuDx885XNFFY4cHmkfg397z2jGdVT1REprp2rFRG1nRUErD98ngsVtTjr5khItDkSf1521FjDFG2GVQcKKKly6l2AL15DLy9X15DCvygRCQJOnK/C7vQ0OX5xJohCcSWOF1RidzW9hs4WVxtgjaIjoUQkCOjXJYowW9OuuypIqrhaBnSNbvYaSuscaYA1io6EEpEg4MYBiaTGhevZNiYBoVYTP5o3wGDLFG2FmYOTSYoJxdboGvphurqGFP5FBdYNorTayec7z3GmqJqxvRKY1C+RL3fnsPHoBbrEhLJwUhp9k1UmluLqqa518/G2s2zJLiIlLoxvTkrD6fby5e5cpJSkD++qWscrrhqVnVVHMIrIueJqvvP6VmrdXpxuL2FWMz07R/DaA+P1O0mF4nr5z45z/HHZEZxuLxJtbPKD0/pwz+Q0o01TtAFUdlYQ88rKY1TVuvVBQ3aXh1MXqlh9sMBgyxTtBYfTwx+XHcXh8lLXoxGHy8vra7Mpr2k6l0ahaClKRAxg39kyGjuADpeXHSeLjTFI0e44XVSNuZl3t9VsIvt8ZeANUrRblIgYQJfYpv2vbBYTPVQ2lqKVSIwOweVuulXt8nibvf4UipaiRMQAvjuzr0/fIyG0/WrVF0vRWsRHhjBrSDIhDfqvhVhMjO+dQNe4cAMtU7Q3gkpEhBDpQoijQohsIcRPL3HOnUKIQ0KIg0KIfwXaxuuh1uWhuKqWsb3i+cPCUQxOjSE+0sa0gUm89d0JxEXYjDZR0Y742c2DeWBqb7rGhZEcE8o9k9N49s4RVDvcKi6iaDWCJjtLCGEGjgGzgRwgC7hbSnmowTl9gY+AGVLKUiFEopSy8HLPGwzZWV6v5K+rjvHvbWeRQHSYladuGcINfVRfLEXgKK9x8otP9rHjVAkA/ZKj+M0dI9R4AUWztMXsrHFAtpTypJTSCXwA3NzonIeAV6SUpQBXEpBg4YOtZ/h4+1k9pbeospaffrCbvFLV1kQROP7nwz3sOFmC2yNxeyRH8ip49O0svM3MJlEorpZgEpEU4FyDxzl1xxrSD+gnhNgshNgqhEgPmHXXwYdbz+BweX2Oub2SJbtzDbJI0dG4UOHgQE65zzArr4SyGicHc8sNtEzR1gmmGeuimWONb5EsQF9gGpAKbBRCDJFSlvk8kRCLgEUA3bt3b31LrxFHM43xPF5JdTNNFxUKf+BweTA18w4TQlDjdAfeIEW7IZg8kRygW4PHqUBeM+d8LqV0SSlPAUfRRMUHKeXrUsoxUsoxnTt39pvBV8u0gUlYzb7v4BCLiemDkgyySNHRSI0PJya8aeKGV0qGd48zwCKFP5BScvToUV566SUef/zxgLxmMIlIFtBXCJEmhLABC4DFjc75DzAdQAjRCW1762RArWwBj8zuR49OEYTbzITbzNgsJm4f1129eRUBQwjB7xaMICrUol2HIWZCrSaevXM4odam3X8VbQe73c7SpUt57LHH6NOnDwMGDOCJJ57g5ZdfprjY/wXMQbOdJaV0CyEeBZYDZuBNKeVBIcQzwA4p5eK6tTlCiEOAB/iJlDJoy7xLq50cy6+gS2wY7z08kb1nyygotzOsW6zK1VcEnAFdY/jyyWlsO1GMy+Plht6dQMD2E8XERVjpkxSFEM3tKiuCjdOnT5OZmcmSJUtYs2YNDodDX0tISCA9PZ2MjAxCQ0P9bkvQpPj6C6NSfN9af4K31p/EajHh9ngZlRbP83eNIETd9SmChGV78/jtFwexmEx4vJIencL5831jmt32UhiL0+lk06ZNZGZmkpmZyeHDh33WR40axfz588nIyGDs2LGYzdf/OXO1Kb5B44m0J/acKeWdjSdxerz6yNudp0p4e8NJvjuzSQhHoQg4BWV2frv4ILVuL7Vo1+iJ81X87stDPHfnCIOtUwDk5eWxdOlSMjMzWblyJZWV9T3PoqOjmTNnDhkZGaSnp9OlSxfD7FQi4gdW7MujtlFKr9PtZenePCUiiqBg/ZHCJqmPbq9kw+FCpJRqW8sAPB4P27ZtY8mSJWRmZrJnzx6f9cGDB5ORkUFGRgaTJk3CarUaZKkvSkT8gNls0hKWG71Lzc3lWCoUBmA2CZrTCZNJKAEJIBcuXGD58uVkZmayfPlySkpK9LXw8HBmzpxJRkYG8+bNo0ePHgZaemmUiPiBm0amsHhXjo83Emo1ceuYbpf5KYUicEwflMRfVhz1OWazmJg7zLhtkY6A1+tl9+7delB8+/btNIxL9+7dW49tTJ06NSCB8etFiYgf6N8lmiczBvLS0iMItG2COUO7cPfEnkab1rbxuODESnCUQtoMiFIfeC0lITKE5xeM5OmP9+HyePF4JON6JfDjeWome2tTXl7OihUryMzMZOnSpZw/f15fs9lsTJ06lYyMDObPn0/fvq2w3V1bCdnLAQl90iHEv2O2VXZWK1NW7aS0xkm3+HA8XklOSQ2dokJUxsv1UnoK3pysvUGQ4HXDnBdh3PeNtqxN4/Z4OVtcQ0yYlYSoEAorHDhcHrrFh6ttrRYipeTgwYN6JtWmTZvweOq7U6SmpurexowZM4iMjGy9Fz+9Af41n/oGIBLuXgxp06/5qVR2VoBxur386tN9bDxyAbNZYDWbePrWIUzun2i0ae2D/9wPVQUgGyQsrHgC+t0Esca3tmmrWMwmeiVGUlbt5Lv/2MbhvApMAmLDbfzu7pH07xJttIltgurqatasWaMHxc+dq28DaDabufHGG/Wg+JAhQ/wj0B43fPgNcFb5Hv/wNvjJeTD7JxCvRKSVeHXVMTYdvaCl9HrAjoeff7SXj34wmaQY1Wr7uvC44OwmXwEBQMDxTBj7PUPMak889fFeDjZo0FhQ7uDRd7JY8uR0bJZgamwRPBw/flz3NtatW4fTWT+jJTExUReN2bNnExsb63+DCvaAp5k5MV435O+C1PF+eVklIq3EF7tzqXX7fsh5pWTVgQK+OSnNIKvaCcIEJit4an2Pm8x+3+/tCFTYXew9U+rT4Re0OThZJ4uZ1M/4/nPBgMPhYMOGDXpQPDs7W18TQjB+/HhdOEaNGoXJFGDxDYkG2UxTV+kBm//eJ0pEWglPMzMZvBJcnvYdcwoIJjOMuB/2vgtue/1xYYb+jUfOKK6V5q7di7g8jb2/jsXZs2d1b2P16tXU1NTPAIqLi2Pu3Ll6wZ/hzV479YNOA+D8Ps37ABAWiO8LiYP89rJKRFqJGYOSWLE/30c0LCbBtIEqJtIqzPuT5onsfx+QENcHbvsnhLRiULKDEhdho3diFEcLKmiYZ+PxwrheCcYZZgAul4uvvvpKF44DBw74rI8YMUL3NsaPH4/FEmQfod9cCp8shDMbtMfdJ8Nt/p0irrKzWolKu4vH39vJicJKzCYTLo+Xx9P7842xKujbqrjs2ld4vNGWtCvySmt45O0dlNc4EQKkhN/eNYLxHWCEc0FBAcuWLWPJkiWsWLGCiooKfS0yMpLZs2frBX8pKY3n5AUptZXaHzG05YkRV5udpUSklTleUEFxlZNBKTFEhwVHW4J2hdejZZ+ERNNsybWixXi9koO55didHoZ1j223LeI9Hg9ZWVm6t7Fz506f9QEDBuh1G5MnT8Zma4Pp+bWVYA4BS8ttVym+AWLnqWLeWn+SwgoHE/p24jtTe9M3WaVF+oUt/wvrfql5IhGd4abXoP9NRlvVbjCZBEO7xSKlZOWBAt7fchqH00P6sK7cPbFnm87SKi4u1gv+li1bRlFRkb4WGhrKjBkzdG+jV69eBlp6nZzfD5/eAxcOaTHDEffDvD9fl5hcCeWJXAebjhby83/v1dubWM2CTlGhfPDoJNXyvbXZ/wEsfgBc9YFNrOHw4DZIGmKcXe2QN9ed4N1Np/SxziEWE8N7xPHn+654Uxo0SCnZu3evXrexdetWvN76JIGePXvqBX/Tp08nLKwdpOE7q+GlVHA0mBZuCYNRD0DGy9f8dMoTCQAvrzjq0x/L5ZGU1ThZc+g884Z3NdCydshXf/AVEAB3Lex4Fea/YoxN7ZBal8dHQABq3V72nS3jeEFFUHvZFRUVrFq1St+mys/P19esVivTp0/Xg+L9+/dvfxX5Rz6vz8q6iNsOu96A9D+Bn1KOlYhcB/lljibH7E4PZy5UG2BNO8dR3vSY9EBN0A62bJOUVjtp0n4a7fPnTFFNUImIlJIjR47odRsbN27E7a7/EO3atasuGjNnziQ6Onhs9wu15VrMsDEeZ139SAcQESFEOvAntPG4b0gpn7/EebcD/wbGSikDP7awjt6JkRzOq/A5FmYzMzClnV+sRjDodtj6R9+CQ2sEDL7TOJvaIZ2iQrCYTdBoHo7bI+nfxfjCzpqaGtauXat7G6dPn9bXTCYTkyZN0rephg0b1v68jcvRJx2W/9j3mDBBt4l+a3kCQSQiQggz8AowG8gBsoQQi6WUhxqdFwX8ANgWeCt9+XHGQB57ZwcujwePV2v33isxUlX4+oMbn4KTq6D4aH37kwE3w4BbjLWrnWExm/hR+gD+sOQQtW6vliVqNTNnaDLdEiIMsenkyZO6aKxdu9ZnnninTp2YN28eGRkZzJkzh/j4Dpz6HZcGM38Lq/9HC6oLkxY3vOVtv75s0ATWhRATgF9KKefWPf4fACnlbxud90dgFfAk8OSVPBF/p/ieLarmo21nySurYUq/ROaPTGnTWSxBjZRwej2UZEPKOEgeZrRF7ZYD58r4NOsc1bVu5g7vwvSBSQG7q6+trWXTpk16UPzoUd+5J2PGjNG3qcaMGdMq88TbFeXntBuusHjoM6/FmVltMbCeApxr8DgH8OkYJoQYCXSTUn4phHgykMY1ptbl4UxRNQlRITw5f6CRpnQchIC0adqXwq8M6RbLkG5a00CX28vxgkriImx0jvbPkKScnBx9nviqVauoqqrvRBsTE8OcOXOYP38+6enpJCUl+cWGdkNMNxj57YC9XDCJSHO3ObqbJIQwAf8L3H/FJxJiEbAIoHv31q8YX7onjz8sOQRC2yueNjCRp28dqu0lK/yHlLD7Tch6VQsUjnoQxnxP662l8AvrDp3nN/85gFdK3F7J+N4J/PqO4dddiOh2u9m6dau+TbV3716f9aFDh+rexoQJE4JmnnjQc/QL2PwHsBfD4Ltg4pNgC/frS7aZ7SwhRAxwArh4i5IMlABfv9yWVmtvZ50srOLbr2/xSe0NsZj45qSDVg0aAAAgAElEQVSeLJrRClPJFJcm8wew+x/1qb7WcBh0B9z6tqFmtVfyy+wseHmTT3dqm8XEzaNSeGL+tTf0KywsZNmyZfo88bKy+nqG8PBwZs2apQtHt25qlPQ1s+M1LbB+8f1hCYWkYfDg1hZ1d2iL21lZQF8hRBqQCywAFl5clFKWA3ojHyHEOq4iJtLaLNubh7tRy/dat5fFu3KViPiTmmLY9XdwN0irdtXAwQ9hxm8gJtU429opaw4W4G10k+l0e8ncm39VIuL1etm5c6fubWRlZfnME+/Xr58uGjfeeCMhISGt/jt0GLxeWP0z31oqt0OrXD+93q9bwEEjIlJKtxDiUWA5Worvm1LKg0KIZ4AdUsrFxlqo4fHKZrLotb5DCj9SdhrMNl8RAa0/UEm2EhE/4PFKmtuoaCwsDSktLWXlypUsWbKEpUuXcuHCBX0tJCSEadOm6cLRp08ff5jdMXHVQG1F0+Nej5bR2BFEBEBKmQlkNjr29CXOnRYImxozZ1gXPs4667OdZbOYVIW6v0nop004bIynFhIHB96eDsD0QUn8Y90Jn2FVVrNg1uBk/bGUkv379+vexldffeUzT7x79+4+7UUiIoxJE2732CIgIhEq83yPCxN0GeXXlw4qEWkL9O8SzSOz+vHKymNYzCbcHi8je8bx0Ax1V+VXQqJg2i9g/TMNYiIRMP4HWjNGRavTLSGCn9w0iD98eUi71r1eBnSJ5sHJqXz++ee6cOTk5Og/Y7FYfLyNQYMGdayCP6MQAjL+ojVfdDu0WiprBPSaCSlj/fvSwRJY9xf+qhOptLs4VlBBYnSoYUVYHZITq2Dn61p21sgHoO881RLez1Q5XCzfvJM9X61j64bVbNiwwWeeeHJysl7wN3v2bGJiYowztqOTtwu2/RlqimDIAhh6d4uzF9U8kTpaU0SklOw9W8aZomoGdo2mXxfV3kTRPrHb7axfv173Nk6cOKGvCSEYN348N9VtU40YMSLw88QVfqctZmcFNQ6nh0ffzeLE+aq6YKNkYt/O/PqO4ZhN6k44oJw/AHvf0br4Dl0I3W4w2qJ2wenTp1m6dClLlixhzZo12O318+yjY+MI7T6ChH7jie87BltEDDfdM5oRPeIMtFjhQ3G2VkflKIdBt0Ha9IB46UpErpJ/bj7FsfxKnA3Se7ccL2L1wQLmDO1ioGUdjH3/hMUP1XUm9Wp1Izc+BVP+x2jL2hwul4tNmzbp3sahQz5t6hg5cqS2RTU3nV+uq8Ze1yDXDbidHn724R6+fHIaJnUTZTzZy+HDb2jvC69bu8ka+R3I+LPfX1qJyFWy8kCBj4AA2F0eVu7PVyISKNxOWPJ9bUbCRVw1WrB91IMqwH4V5Ofn6+1FVqxYQWVlpb4WFRXFnDlzyMjIID09na5dtYzDnadKMJl3gdu3zbjd5eHUhSp6Jxnf3bdDIyV83mhgm6taq6sa/xgk+Ld+TYnIVRIV1vS/SgiICVftGAJGSTbNFi6YQyBvJ/RND7xNQY7H42H79u16M8Pdu3f7rA8aNEjPpJo0aVKz88QjQy00Vwbl8UoiQtRHiOHUFGuB9MaYLHBuixKRYOGeSWn84pP9PhPfbBYTt49r/d5ciksQmay5643xOCG2R+DtCVKKiopYvny5Pk+8pKREXwsLC2PmzJn6PPGePXte8fn6JUeRHBPK2aJqPHViYjULBqXEkBzbDsbKtnVCorUMrGbmURHb0+8vr0TkKpk6MIlHZjt4bU02DqeHmHArT84fyICuKp0xYITHw/B7Yf+/fPsDdZ8EnTtuJ2Wv18uePXv0CX/btm3zaS/Sq1cvveBv6tSp1zxPXAjBy98ayy8/2cfuM6UIYHyfTjx969BW/k0ULcJigwlPwJYX698XZhvE9YIeU/z+8irF9xrxeCU1tW4iQy2qiMoIPG7tzZL1KnhdMOxerQjR2rHuiMvLy1m5ciWZmZksXbqUgoICfc1qtTJ16lQyMjKYP38+ffv2bbVr1eH0gOC6u/gqWhkptffElpfAWaVNAp3xGwiLbfFT+q1ORAgxG7gTeEVKuUcIsUhK+XoL7fQ7rSEiUkoO5ZZzOLeC1IRwxvVKUBkpioAipeTQoUN6JtWmTZt85omnpqb6zBOPjIz0my25JTVsO1FMVJiFKf0TlaC0U/xZJ/J94NvAU0KIeGBEC56jzeDxSn7+0R62ZhfjlRKLSdAlNozXHxhPRKjaDTQMrweOL4XC/ZA4VKtcb2dzRaqrq1m7dq0eFD979qy+ZjabmTJlii4cQ4cODYhn/O7Gk/xjnVZ4aDYJXrAc5vUHxtOjk+raYBhSQu52OLUWolNg4G1+nyHSkJZ8Cl6QUpYBTwohngf825jFYNYeOs+27GI9oO4EzhZX89b6Ezw6t7+xxnVUnDXw1hQoPgYuu7aVldAfvr0hoG8ef5Cdna17G+vWraO2tlZf69y5M/PmzWP+/PnMnj2buLjAFvrllNTwxroTPqnuwuXhmc/284+HVMGnIVxM7z34oZYCbw2FFU/Cg9sgrmdATGiJiCy5+I2U8qdCiMda0Z6gY+2hAuwu37QHl0ey5vB5JSJGsf0vcOFwfb2Is0qbm5D1Ckz6ibG2XSO1tbVs2LBBF45jx47pa0IIxo0bp3sbo0ePNrS9yLbsoibjR6WEQ7nluNxerBbV+iTgnNkABz+qD6g7q7Tvlz4GC78IiAlXFBEhxDvAQ1JKJ4CU8vOG61LKl/1kW1AQFxGCWaCnNl4kOkzVhxjGkc98Cw5Be3z4szYhIufOndNFY/Xq1VRXV+trsbGxzJ07Vy/4S0xMNNBSX6LDrM22+LGZTar1j1GcWKEVFjZEerWtrQBxNZ7IOWCLEOI2KeXpiweFEMOAx6WU3/GXccHAbWO78eXuHDwN5oeEWs3cNyXNQKs6OFFdAQE+48EERKUYZNDlcblcbNmyRReO/fv3+6wPHz5c9zZuuOEGLJbgjLVN6Z/IC+bDCDz6/3yI1cQto1NVoolRRCaDJazpTVVY4LY6r3i1SimfEkJsBVYJIX4IWIHHgSjgT362z3DSEiN5fsFIfvfFIc6X24kKtbJoRh9mDEq+8g8r/MPEn0D2Mt82D9YwmPSkcTY14vz58yxbtowlS5awYsUKysvL9bWIiAhmz56tF/ylpraNqYyhNjOvPTCOX392gMN55VjNmoA8Nkdt6xrG0IWw5ilfEbGGw+TA9ZK7qhRfIUQ08BxaZlYhcKeUckOrGyNEOpowmYE3pJTPN1r/MfAgWg+4C8B3pJRnLvecrVknUuvyYLOYVH1IMHAsE5b9EEpPQlxvSP8j9MswzByPx8OOHTt0b6PxNde/f3+94G/y5Mltfp64y+3FbBLKAwkGzu+HL78HOdsgLB5u/Lk2rO06P6darU5ECPEKcBPwPvAW8AvABtwnpay53M9eC0IIM3AMmA3kAFnA3VLKQw3OmQ5sk1LWCCEeBqZJKe+63PNer4h4vJJ9Z0upqnUzqke8SutV6JSUlLBixQq94K+oqL5/UWhoKNOnT9e9jd69extoaesjpeRATjml1U6Gd48lJrxpzy1F26Y160T2A09KKS/6SwuFEE8AW4UQt0spj13mZ6+FcUC2lPIkgBDiA+BmQBcRKWXDaNFW4J5Weu1mySu18/23tlNhdyGEwO318stbhzJ9sNrKChpqq+DQv6H8LHSbpI0D9ZOnKKVk3759et3Gli1b8HrrY2U9evTwmSceHt62040vRUlVLY+8nUVBuQOT0LIVf5Ten1vHqj5yAadgHxxdrI2PHnwXRAX+s+lqYiJ/a+bYi0KI3UAm0FrDxVPQgvgXyQHGX+b8B4ClrfTazfL0x3sprHD4dDD95af7GZUWr+68goGys/D3cXVpjdVgi4Se02HBf6CVUmErKytZtWqVvk2Vl5enr1ksFqZOnaoLx4ABAzrEVufvvjjE2eIaPA3eGH9cdpRxvTuREt8+hTMo2fAsbHgOPLVgtsLqn8M9SwPSL6shLd6bkVKuqdteai2ae/c1u9cmhLgHGANMvcT6ImARQPfuLbs7qq51czivokkLbJNJsCW7iPRhXVv0vIpWZMWTWgtsWVfH46yCU2vg+BLo/7UWPaWUkqNHj+rNDDdu3IjL5dLXu3TpomdSzZo1i+jojjciefOxCz4CAuCVsOFIIXdP7GmMUR2N8nOw4TfgdmiPL856+fReePxUQCYaXuS6NvillOeufNZVkwN0a/A4FchrfJIQYhbwc2CqlLK28XqdXa8Dr4MWE2mJMWYhmv07CKG1gFcEAadW1wvIRVzV2pS3axARu93O2rVrdW/j1KlT+prJZGLixIl6M8Phw4d3CG/jcljMAncjETGZ1PsioJzZACYr4PA9XlWg3VgFcEBbMEWJs4C+Qog0IBdYACxseIIQYiTwGpAupSz0pzGhNjOT+nbmq+MXcDWoNDQJwcQ+aoJeUBCRCPYS32PmUIi+csrsqVOndNFYs2YNDkf9mzEhIYF58+aRkZHBnDlzSEhIaG3L2zTzR6Tw5e5cahu2P0EwQ8UKA0fkJaapCgG2wE6aDBoRkVK6hRCPAsvRUnzflFIeFEI8A+yQUi4G/gBEAv+uuxs8K6X8ur9sevrWofy/j/eSdbIYkxAkRIXw3J0jCLW1r0Z/bZapT8PiB33rRcxWGPntJqc6nU42bdqkB8WPHDnisz569Gh9m2rs2LGYzepvfCl+MLc/FXYX6w8XIkwQFWLlV7cPIy5CxQkDRs9pWqFhmV2bqQ5gCdeufWtoQE1R80SugvIaJzVOD8kxoR1+KyPo2PMOrH0aqs5DyjjI+AskDwMgNzdXnye+cuVKqqqq9B+Ljo72aS+SnKzuoq+VCruLKoeL5JgwVS9iBFWFkPmoFgO0hMHY72s3VubW8Q38Nk+krXG9IlLlcOF0e4mPbNvFYR0Bt9vNtm3b9KD43r17fdaHDBmiexsTJ07EalX9z64Xu9NNlcNNp6gQdYPVzvDnPJEOQZXDxS8/2c+2E1oBWbeECJ69czhpnf037Edx7Vy4cIFly5aRufgzli9fSmllfWwjPDxcnyeekZHR4kw9RVPcHi8vLDlM5p48EBAbbuUX3xjG6LR4o01r/9jLYPvLcGKlNhZ64pOQ0Ncwc5Qncgme/NcutmUX6UF1AcRG2PjiialYzCoLxSi8Xi+7du3Sg+Lbt2/3mSfeJx7m9zORMTCUG3+9jdCUIQZa2355ddUxPth6htpGjUk/+eEUEqKU1+43aqvg1WFQla+l9wqz1jfuO5sgeXirvpTyRK6DKofLR0BAK1hxuj1sP1nMxL4qOyuQlJWVsXLlSpYsWcLSpUspLKxPzLPZbEwb3p2MzqfJ6OWmbwKAF4QDtjwHt//LMLvbM5/tOOcjIABeKVl1oIC7JvQwyKoOwN53ofp8fX2I9Gj1USv/G+5dZohJSkSaoeHktoZIwOH0NLumaD2klBw4cED3NjZv3ozHU///3q1bN71uY8aMGUT85y44nt3oSbyQlxVgyzsOjQUEwOP1UuN0N3O2otXI3eabjXiRgj2Bt6UOJSLNEB8ZQveECE4WVvmUzHs8krG9VM2AP6iqqmLNmjW6cJw7V1/HajabmTp1qh7bGDx4sG8Qt+toOLlKa/9wEWGCpNZ17xX1TOmfyLrD532KDi0mEzcOCJ4hWu2SLqPh0MdNhaTzYGPsQYnIJXn2zuE8/FYWzrp2Am6P5Je3DSVKTTRsNY4fP67Xbaxfvx6n06mvJSUl6QV/s2fPJjY29tJPNPYRyPorOLzgdWkCYg2H6b8KwG/RMXli/kCOn6/kQoW2reL2Sh6c3pveSYEtdOtwjPgWbP49eNzgdWrXuiUUZj9/5Z/1EyqwfhncHi87TpVQ43QzrlcCkaFKQK4Hh8PB+vXrdW8jO7t+C0oIwfjx43VvY+TIkdc2T7wiDzb9Fs5shKShMOXn0HmAH34LxUW8Xsm+c2UUVdYyvHssnaMDW+TWYam+AJt+p3nfnfpr13pdbVRroupE6mjNoVSKa+fMmTMsXbqUJUuWsGbNGmpq6t3wuLg40tPTycjIYO7cuXTu3IoJC7VVmssf0TmgzegUCr9iLwNkQMbfquys6+R4QSV/W32c4wUV9E2O5nsz+9I3WbnqV8LlcrF582bd2zh48KDP+ogRI/TW6ePGjWv9eeIuu9YK5dAn2uPYnnD7+9BlZOu+jgKHy8M7G06yfH8+IRYTC27owddHp6qiQ39QWQAfL4CcLdrjrmPhjg8hOsVYu1CeSLOcKarm/te24HB6kGg1IqE2M29/dwI9OkX4xc62TH5+vlbwl5nJihUrqKio0NeioqL0eeLp6emkpPj5ov/8Adj/r/oUSICQGHgiF2zqb9eafP+t7RzIKdezGUOtmpB8b1Y/gy1rh/xtFBTur++TJcxaoeHD+/zmaStP5Dp4b+NJal0ePTNLqxHx8t7Gkzx161AjTQsKPB4PWVlZelB8165dPusDBw7UYxuTJ0/GZgtQYz6PG/b90zdLC7R03yOfw7CFzf+c4po5ml/Bodxyn3R4h8vL+1vOcP+NvVWT0tak6BgUH60XENDqQ0pPQeFBSDK2oFaJSDOculDdZBiVxys5eaGq+R/oABQXF7N8+XIyMzNZtmwZxcXF+lpoaCgzZsxg/vz5zJs3j7S0NGOMlB7fN1rD486O+7fzB7klNZibuQMWAkprnHSxhRlgVTvFVa1lYTVGmIPiulYi0gyj0uI5VlDhU7FuNQvGpHWcGhEpJXv27NFjG1u3bvWZJ56WlqbHNqZNm0ZYWBB8aFhCoNtEOLdZ8z4uIr3QN8M4u9ohA7rG4Gp8pwVYzSY6q7YnrUvSMK1Lb2PBMJm1GimDUSLSDN+c2JNle/OosLuodXsJsZiIDrOysJ2P/qyoqGDlypVkZmaydOlS8vPz9TWr1cr06dP1SvF+/foFZwD11nfhrSngKNcee10w72WIufKgKsXV0zUujFtGp/LFrlzsLg8mAVaLif+6aZDqLdfamMyw4DP4ZwbIBpvsCz7T5ucYjAqsX4JKu4vFu3I5lFvGwK4x3Dw6td0VGkopOXz4sO5tbNy4Ebe7fjsoJSVFj23MnDmTqKg2kp3mcWuz1h2lkDYjoKNCOxJSSrZmF7FiXz5hIRZuGZ1Kvy4db+Z8wHDWwIkVgITec/yeKKLqROpQdSK+1NTUsHbtWj0ofubMGX2t4TzxjIwMhg0bFpzexrVwej189RLYi2DwXTDmu9q2l0IR7Eipparv+JsW1xv1EAy9O2B1T20yO0sIkQ78CW087htSyucbrYcA7wKjgWLgLinlaX/YUml3sXx/PufLHYztlcDYXvFt9gP1xIkTurexdu1aamvrs5c6d+7s014kPr4dzYPY90/4YlF9n6H8PXDkM/jWGlWA2EqcL7ezfF8+DpeHaQOTlCfSmqz+OWz7sxZYB8jN0upEMl421q5GBI0nIoQwA8eA2UAOkAXcLaU81OCc7wPDpJTfE0IsAG6VUt51uedtiSdytqiaB9/YhtPtweHyEmYzc0OfTjx35/A2ISS1tbVs3LhRn/B37Ngxn/WxY8fq3saYMWOurb1IW0FKeCEZqgt9j1sj4J5l0GOyMXa1I7ZmF/HTD3bj8Uo8XonVbOKBab25b0ovo01r+9hL4cWuvvVOAOYQePw0RPl/nHNb9ETGAdlSypMAQogPgJuBQw3OuRn4Zd33HwN/EUII2cpK+GLmYSodLj2GZXd62JpdxI5TJUHbxTcnJ0f3NlatWkV1dbW+FhMT4zNPPCkpyUBLA4SrBuwlTY9LLxQeUCJynXi9kmc+3Y+jQUv4WreXN9adYP6IFDWY6nopOQFmW1MRsYRqNSMBEJGrJZhEJAU41+BxDjD+UudIKd1CiHIgAShqTUP2ni2lsSzZnR52nCwOGhFxu91s2bJFF459+/b5rA8dOlRPwZ0wYULrtxcJdqzhEBbf1BMRJq1Bo+K6OF/hoLq2aU2O1SzYe66UGYOC50OuTRLfGzzOpsfdDkjoH3h7LkMwfbI0t0/U2MO4mnMQQiwCFgEtmqsdG26joNz3DiDUaiLR4C6lhYWFLFu2jCVLlrBixQrKysr0tYiICGbNmkVGRgbz5s2jW7duBloaBAgBc/8XvnioPiZiCYeUcVotieK6iA6zNn3jAV4JiVGqm+91ExYHN/wYtv2pPiZijYCR3w4qLwSCS0RygIaffKlA3iXOyRFCWIAYoMmehZTydeB10GIi12rIg9N680LmYd1VFwJsFjNzhna51qe6LrxeLzt27NC9jaws30l9/fr10+s2pkyZQkiI2kLwYdhCiE6FLS9BzQUYvEDLzmoDca1gJyLEQsbwrizdl6dPObSYBalx4QxOjTHYunbCzN9A11GQ9aqWnTV6EQxZYLRVTQgmEckC+goh0oBcYAHQuNnRYuBbwBbgdmBNa8dDAG4apRWm/WP9CUqrXYzoEcuPMwYGpE6ktLSUFStW6AV/Fy5c0NdCQkL0gr958+bRp08fv9vT5ul5o/YF4KjQ3pA5X2kT4kY9COHtKBstwDw5fyDxkTY+25GD0+1l2sBEfpg+oE0knwQt7lqtgWj2cojvA2MfhkG3GW3VZQma7CwAIUQG8Ee0FN83pZTPCiGeAXZIKRcLIUKB94CRaB7IgouB+EsR7HUiUkr279+v12189dVXPu1Funfvrsc2ZsyYQXh4uIHWtmHsZfDaSKgqBHeN1kYiJBq+tyfotgcUHRSPC96crDVVdFVrgXVzCDzwlSFNFttidhZSykwgs9Gxpxt87wDuCLRdrU1lZSWrV6/Wt6lyc3P1NYvF4jNPfODAgerOrjXY/hdtJoOnLtbltmvNGjf9Fub9yVjbFAqAw5/WCwhogXWPC1Y8CfcuM9a2yxBUItJekVJy7NgxvW5jw4YNuFwufT05OVkXjVmzZhETo/aUW51Tq+sF5CJeF5xaa4w9CkVjzmysFxAdCbnbDDHnalEi4ifsdjvr1q3TvY2TJ+t33YQQTJgwQQ+KDx8+vH0W/AUTnQfD2U2+reKFSRvso1AEA50GaKnprhrf47E9DTHnalEi0oqcPn1aF401a9Zgt9v1tYSEBH2e+Jw5c+jUqZOBlnZAJj4Be9+ta6ddFwe0hMKNTxlqlkKhM/xe2PBrLbguPdoxazjM/K2xdl0BJSLXgdPpZPPmzXpQ/PDhwz7ro0aN0repxo0bh9mspr0ZRlwaPLgVVv8M8ndqnsnM51ThoSJ4CI2BRTthzVPa9mtMD5j+K+g102jLLosSkWskLy+PpUuXkpmZycqVK6msrNTXoqKimDNnDvPnzyc9PZ0uXQJbV6K4AomD4O7/1D8+vgzevBGqz0P/m2HKzyAs1jj7FB0PjxuyXoFdb4DJAmMehpvfhDa0va1E5Ap4PB62bdumb1Pt3r3bZ33w4MG6tzFp0iSs1vY1c6Tdsu9fvtXs2/4Mx76Ah/cFxaAfRQfhs2/B0f/UX4fLfwSF+4OuU+/lUCJyGR555BE++OADSkrqi+LDwsKYOXOmLhw9evQw0EJFi1n1374BTE8tVOTCsSUw8Bbj7FJ0HMrOwpFPfZssumo0r2Tar9pMIawSkctQUlJCSUkJvXv31gv+pk6dSmio6g3U5qnIbXrMbYfiY02PKxT+oCRbKyZs0u7dBuVnlIi0B55++ml+9atf0a9fP6NNUbQ2nfpD0RHfY5ZQ6HrFAl2FonVIGqp5wI3xuCC+b+DtaSFtJ3pjAAMHDlQC0l6Z/1ctfVLUZcxZwyHlBkibbqxdio5DRGeY8ITWnfci1nCY8RsIiTTOrmtEeSKKjknadHgoC7a9DFV5MOBWGLoQ8ndBVQGkTmgz2wmKNobLAWc3attW034J3SfDnrdAWGD0Q5A2zWgLrwklIoqOS+Ig+Nqr2vc1JfCPCVB0FExmrW/R3Je0LqoKRWtxej28fzMgtRHOtgi4bzXc8aHRlrUYtZ2lUAAs/QGcP6D1Lqqt0IKdy5/QREWhaA1cDk1Aasu1a8xZCVXn4YObaTJKtQ2hREShADjyGXgbjSP1uuHwZ8bYo2h/nNtM00GsUssULD1lhEWtghIRhQK0auHGCBNY1LRIRSthtl3C45DaWhtFiYhCATDyO9qgqoaYzDD4TmPsUbQ/uk2EkCigwXwgYYGk4RCTaphZ14sSEYUCYNbzMOBmrfjLGgHhneCuTyEiEYqPQ23llZ9DoWgOt1O7hlx2LYie0E+7YTGHQMoYWPCfKz9HEBMU2VlCiHjgQ6AncBq4U0pZ2uicEcCrQDTgAZ6VUrbdlAZFcGEJgdvfh5pisJdAXC/Y/z78vrPWltvr1prjzXmhTTXHUxjMrjdh2eOA1K6h8T+ERw5B+VmtR1t0itEWXjfB8m74KbBaStkXWF33uDE1wH1SysFAOvBHIYRquapoXcITIKEvnN8PXyzSMmmcVVq21s7XIOtVoy1UtBVytsHSx7QsrIvX0PaXtZqQuJ7tQkAgeETkZuCduu/fAZp0wJNSHpNSHq/7Pg8oBDoHzEJFx2LXG01bUrhqtA8BheJq2PGatoXVEFeNVuDajggWEUmSUuYD1P2beLmThRDjABtwIgC2KToibjtIb9PjzfU6Uiiaw22naUovTRsutnECJiJCiFVCiAPNfN18jc/TBXgP+LaUzb3LQQixSAixQwix48KFC61hvqKjMXShb08j0Bo0DrvHGHsUbY9h9zRzDYXB8PuMscdPBCywLqWcdak1IcR5IUQXKWV+nUgUXuK8aGAJ8JSUcutlXut14HWAMWPGtN1SUIVx9JoJ4x6FbX/Scvi9bi1Fc/JP4eRqrb9Wj6ltOjVT4Qcc5XBiBZis0HuO1gtrx9+0a8jjgp7TYOKTRlvZqgRFdhawGPgW8Hzdv583PkEIYQM+A96VUv47sOYpOiSzn4fxj0HeDojrraX9vjocqgvRs22m/mQbof8AABJnSURBVAKmNJcHouhwHF8KH91e1xlaaFl8966ECT/WGnvG99X6tbUzhAyCni1CiATgI6A7cBa4Q0pZIoQYA3xPSvmgEOIe4C3gYIMfvV9Kuedyzz1mzBi5Y8cOf5mu6Eh88A1thK7XXX/MEgaLsiBxsHF2KYzHWQMvJGlZWA2J7gY/OgNCNP9zQYwQYqeU8ooDdoLCE5FSFgMzmzm+A3iw7vv/A/4vwKYpFPVkL/UVEACvC45+oUSko3PuK61NTmPsxdoEw4S2M2TqWgmW7CyFIvixNDMW2WQFW9sZIKTwE7bI5vtieT1Ng+vtDCUiCsXVMubhpv21hOqvpQBSxmmTCht6IyYrpN4A0V2NsysAKBFRKK6W6c/AiPs1j8QcArE9YeGXkPVXeD4enrHBe+lQdsZoSxX+prYKFj8Ez0bAb8Lh8+/Ags+h61hNPMw2SJup9V9r5wRFYN2fqMC6otVx2bUAangnWPUz2P5nrRIZNM8kIhEePw2WttveW3EF3purTSm8WHxqtmkjlb+9Duyl2nUQGm2oidfL1QbWlSeiUFwr1jBt60J6tTYoFwUEtGaNzio4vsQ4+xT+pewsnNno273A44Tc7Vq33rC4Ni8g14ISEYWipXhcda0tGuF1a2NPFe2T6kJty6oxZmuH/LsrEVEoWoo1FBKHNLMgIW1G3bfte7u4QyGl9pU0tPl1rwe6jAqsTUGAEhGF4nq45W0IiQZruDZi1xIGE56A0+vgD0nwKzP8dSic3Wy0pYqWUnoa3pkJz1jguShY8xTc/Eb9YClziPb9198AW7jR1gYcFVhXKK4Xeykc/Lc2zKpvBhQd1rJ1GsZKrBHw/f0Ql2acnYprx+2EP/aE6vP1XZ0t4TDqAZj0Ezj0iXZ80G0Q28NQU1ubNlWxrlC0acLiYMyi+sef3esrIKAFXnf+HWY9F1jbFNdH9jItUaJhw3B3Dez6O8x9ESY8bpxtQYLazlIoWpuaoqbHvC6ozA+8LYrro+ZC83NlvG5wq9kyoDwRhaL16XcT7H5LE46LWCNgwNe1sbvZy7UxvANv61CpoG0CT10vtJLjWhV6zxla2nZjOg2AENXuBpSIKBStz4xn4cQq7S7W7dAK0XrPhdwd8Mk3tQ8lkxWW/xi+vRGSmsvwUgQceyn8fTxU5df93UKg+2SY8hRsfFbzSEwW7evW94y2NmhQIqJQtDYRneCxI9odbdkprZI5LA5eG11fV+Jxggv4/AFYtM1QcxV1rH8Gys9ofxv4/+3de3RV1Z3A8e8vyQ0h4SEIBkSthqI8lCKkKFiniKSjmWoAteMsB8FKGWXsaJdrRtZyptPVlvroY1VRS/EFOIpOaQXagh0oUK0uUgPyiEDkKVAiBBxeEUMS9vzxO5nc5N6Qy0nuOTeX32etu3Lvufve/PY5N/eXvfc5e2uX1Z4/w5cmwX3rYdtSyDkPBk20FmQUSyLGJENmBAZPbHxcOou4623vfx/q6yDT/hRDt3VJYwJpUFsNW96EoXdBr8vDiSvF2cC6MUHIu0C7QZqL5OrMr3vehXUvwScbgo/tXHV0L3wwFz76vY6FdLkgtoxkQbd+gYfWkdi/P8YE4YpbNWHUftZ4tk8kFwqnw0tfgYObvKvbnQ7M37ZAl1c1yfHuT2DVf+hEiZKhF4ze8H04sLHp6dlZ2fDlfw4vzg4gJT6lItJTRJaLyDbvZ48zlO0mIn8VkWeCjNGYNol0hnvfgy98Vb+4OnXXK9sjneGTD/RahNpq/QL76Pew+VdhR5y+Dn2kCaTuc93np47DiU9g02vw9dnQtR8g0HsI3LXUurFakSotkRnAH51zj4vIDO/xIy2U/QHwp8AiM6a99OwPU1Y23fbMIP0yi1ZbDZsWwJV/H1xs55JtS2PnNHP1sHsV3L1cB9JNwlKiJQKUAPO8+/OA8fEKicgIIB/4n4DiMia5cs6L3SYZeh3JrtUw/2vw7JWw4lH4/Gjg4XV49XVQ+izMHg7PXwsb/ku7ruKNT2V1BpHgY+zgUqUlku+cqwRwzlWKSMwIl4hkAD8FJgE3BhyfMckx+l9jp0nJyoFeg+G1v2vc/ul22PobuH+jnvllEvPmJKhY0rgff1cOw78FGZlNy0VyYcS02NebVgXWEhGRFSJSHudWkuBbTAeWOuf2JvC7polImYiUVVVVtS1wY5Jp8ES48Uc6RpKRDV36wIT5UPaLpomlvgaO/VW/EE1i/ncXbF3UdD/WVsPa2fAPv9VEnZGlSXvYFCh6IrRQO7LAWiLOuXEtPSciB0Skr9cK6QscjFNsFHC9iEwHugDZInLCOTcjzu+aA8wBncW3fWpgTJJc+yCMfABqjnnJJAMW3hlb7lQ1VG3RW+ksOLYPBpbA0Em2FK9zOtaxfq4m48JpjVedNx9zyohA557wwIfaRZjV2fZfG6RKd9YSYDLwuPdzcfMCzrm7Gu6LyBSgMF4CMaZDysjUq9obnD8QqsqblsnO1S/AOYU6+Z+rh10rYcN8mLzq3D4lePkj8P5z2tIAqFgE1z0Sf5JEVw89CvR+TvfgYkxTqfKpexwoEpFtQJH3GBEpFJEXQo3MmDAUz/IuRPT67iO5kD8UNr7iXWviTQpYWw2V62Dncn3sHNSeTP8VFetqdCVB0NmRS59uTCCg++jdJ3Tdj0he4/ZILoz94Tm5eFSypERLxDl3mDiD5c65MmBqnO1zgblJD8yYsFw2BqaWQulTemX1wPFw9T0wMy+2bO1nsH8tHKqA1d/TbrHuF8Mtc6B/UdCRJ1fVVnhzMlSW6cSWV0+FL96k4xr1zVodkqmD5QXjYP3LWr7wfigYG07saSolkogxJo78K+HW55tu634xHNnddFskT2cMfmdm4yDykd3w+niYthZ6Dwwi2uSrPQkvXw+fHQacjnV88CLUHI1NIKBT8Xe/BPoMhUFxrxow7SBVurOMMYkoelK7ZBpkZkPXvrBrVexqinWnYO0v4UA5zB2rrZinB0D5G8HG7MfeNTot+8w8ePYq2PaWzopcV0OTiSzrTsLmhTpVTPR+ieTCl6dD5zjX4Zh2ZS0RYzqSIXfoBYrv/AiO79c5ua5/FGYPiy3r6uDIHnjpOu3iAr3eZPE3NfkMmqD/3e9coc8VjNNpWIJ0uh4+fltbF5eO0Wn0D1XA/HGNYxxV5fDGRE0Kp+MsEFV/CkpehnUvaMskI6Jnu119T6BVOVdZEjGmo+lfFDvWMWiCnp0UPZV5JA8iOXGmN/8MVv2nziz8anHjP/YiOlfUJaP18ac79NbnS9Alv20x15yAfWv0Svw+w/R3Hd0X1T2Fdj/dPEvHd5qfllt3UqfNp/lStQJ9R+gqg6MesjXPQ2BJxJh0MOZ72qI48rEupiQCl98CWbmxX8igq/e9Pr6xhdLg9RL4zl5dgXH70sbrLEY9DONm6pTpZb+Ejd70IaO+AwNu1tdWroc/P6aJp//fwuiHIbcnlP83LL5HL+w7XQ89v6hzVC2aoicNRC8/u+zbuixtvCVpq6v0zKqV/65Tw0gmZHWCCfNiy5rAWBIxJh3kdNfV93au0C/xi66BC0fA5l9D+YKmp79KprYG9sVZUbGuBpb/G2xfpsmjIQGVPgWXflVPpd0dNf6y910o+rG+3ytF2j2Gg4PlUP4aTPKSRcOKjgBVH8Kib8Lu1XGShUBevpf8osZ4MrNhQLEmpkG3wY4/QE4PuOKW4LvgTBPi0vx88sLCQldWVhZ2GMaE43S9dlnteQ9qT2gXV3YeTHxVWx3NB+MjufolfmRX7Hv1vwn2vB37mk7doPdg7a5q8l55emry1jdjXyOZejt9KvY1N/0cymbD4QqdIj/SBfJ6w7T3tTvMBEJE1jrnClsrZy0RY9JZRibctQy2vwUfvwM9C+DKOyG7i161XbWlsTUgmdCjfwsXKoq2ZiTOCZ31p/R9mqut1vm+iDMzrmTqlOubXm3a3SaZMOQbMGwybF0M+8s0QQ25w1ocKcpO8TUm3WVkwOXFUPQYjPgWdOqqYyb/+JaOP2R20u6ii67RbSOnNz1dFvQLfPjUxlUZo2XlQP5VsdsjeU3XmW+Q2UmTQvEsGDhBH2flwHmX6VhJTjedqXjI7VD0OAy72xJICrOWiDHnqm79YOp7UH1IH+f10p8j/gkObYW1c/R0WXdar08ZdjdULNZWTUP3VCRXx0Tyh8K8Gxrn9MrKga4XauLpPUQnlKw7qYP+l46Br/9CE8Ptr8Hnx7TbqmtfW8+jA7IxEWNMfCePwLG9ejZVQ0vgdD2sn6dnZ+V0h2v+BS67QZ87uBne+wl8uk2nIhn5bW1VNLzuUIVOMtm1bzj1MWcl0TERSyLGGGNiJJpEbEzEGGOMb5ZEjDHG+GZJxBhjjG+WRIwxxvhmScQYY4xvlkSMMcb4ZknEGGOMb2l/nYiIVAEft+EtegGH2imcsKVLXdKlHpA+dUmXekD61KWt9fiCc653a4XSPom0lYiUJXLBTUeQLnVJl3pA+tQlXeoB6VOXoOph3VnGGGN8syRijDHGN0sirZsTdgDtKF3qki71gPSpS7rUA9KnLoHUw8ZEjDHG+GYtEWOMMb5ZEmlGRO4QkQ9F5LSItHhmg4jcJCIVIrJdRGYEGWOiRKSniCwXkW3ezx4tlKsXkfXebUnQcbaktX0sIp1E5A3v+VIRuTT4KFuXQD2miEhV1DGYGkacrRGRl0TkoIiUt/C8iMjTXj03isjwoGNMVAJ1GSMiR6OOyXeDjjERInKxiKwSkS3e99aDccok97g45+wWdQMGAVcAq4HCFspkAjuAAiAb2AAMDjv2OHE+Cczw7s8Anmih3ImwY/Wzj4HpwGzv/p3AG2HH7bMeU4Bnwo41gbr8DTAcKG/h+WJgGbqo+rVAadgxt6EuY4DfhR1nAvXoCwz37ncFPorz+UrqcbGWSDPOuS3OuYpWio0EtjvndjrnTgGvAyXJj+6slQDzvPvzgPEhxnK2EtnH0fVbCNwoknLrq3aUz0qrnHNvA5+eoUgJMN+pNcB5IpKSyxgmUJcOwTlX6Zxb590/DmwB+jUrltTjYknEn37A3qjH+4g9cKkg3zlXCfphAy5ooVyOiJSJyBoRSZVEk8g+/v8yzrk64ChwfiDRJS7Rz8ptXlfDQhG5OJjQ2l1H+btI1CgR2SAiy0RkSNjBtMbrzr0aKG32VFKPS1Z7vVFHIiIrgD5xnnrUObc4kbeIsy2U09zOVJezeJtLnHP7RaQAWCkim5xzO9onQt8S2ccpcxzOIJEYfwsscM7ViMh9aOtqbNIja38d4Xgkah067ccJESkGFgEDQo6pRSLSBfg18JBz7ljzp+O8pN2OyzmZRJxz49r4FvuA6P8WLwL2t/E9fTlTXUTkgIj0dc5Ves3Xgy28x37v504RWY3+NxN2EklkHzeU2SciWUB3Uq+LotV6OOcORz18HngigLiSIWX+Ltoq+ovYObdURJ4TkV7OuZSbU0tEImgCedU595s4RZJ6XKw7y5/3gQEicpmIZKODuilzVlOUJcBk7/5kIKaVJSI9RKSTd78XcB2wObAIW5bIPo6u3+3ASueNJKaQVuvRrH/6VrRfuyNaAtztnQ10LXC0oTu1oxGRPg3jayIyEv2uPHzmVwXPi/FFYItz7mctFEvucQn77IJUuwET0MxdAxwA/uBtvxBYGlWuGD0TYgfaDRZ67HHqcj7wR2Cb97Ont70QeMG7PxrYhJ41tAm4N+y4z7SPge8Dt3r3c4BfAduBvwAFYcfssx6PAR96x2AVMDDsmFuoxwKgEqj1/kbuBe4D7vOeF+BZr56baOHsxlS4JVCXB6KOyRpgdNgxt1CPr6BdUxuB9d6tOMjjYlesG2OM8c26s4wxxvhmScQYY4xvlkSMMcb4ZknEGGOMb5ZEjDHG+GZJxBhjjG+WRIwxxvhmScSYgIjI/SLyXNTjH4rIK2HGZExb2cWGxgRERHKBCuAq9ErjH6BXQp8MNTBj2sCSiDEBEpEngTzgZqDIhT9bsjFtYknEmACJyEB0gsUS51wqTtppzFmxMRFjgvVdoIqoZRhEpEBEXhSRheGFZYw/lkSMCYiIPIzOPPwN4MGG7U6Xzr03tMCMaYNzclEqY4ImImOBe4BRzrnjItJNRIY559aHHZsxbWEtEWOSTEQuAV4A7nDOHfc2PwU8FF5UxrQPG1g3JmQicj4wEyhCFwt7LOSQjEmYJRFjjDG+WXeWMcYY3yyJGGOM8c2SiDHGGN8siRhjjPHNkogxxhjfLIkYY4zxzZKIMcYY3yyJGGOM8c2SiDHGGN/+Dz8RkjB7V6H2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X[:, 0], X[:, 1], s=30, color=colors[Y])\n",
    "plt.plot([x_min, x_max], [y1, y2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$X_1$')\n",
    "plt.ylabel(r'$X_2$');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also simply use our plotting function above to identify the mislabelled points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 1b: Analysis of a FFWD Neural Network with one hidden layer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's now repeat the analysis now using one hidden layer."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_model_h1():\n",
    "    # Create model\n",
    "    model = Sequential()\n",
    "    \n",
    "    # Add the hidden layer\n",
    "    model.add(Dense(2, input_dim=2, kernel_initializer='normal', activation='relu'))\n",
    "    # Add the output layer\n",
    "    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))\n",
    "    \n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/200\n",
      "100/100 [==============================] - 2s 16ms/step - loss: 0.6924 - accuracy: 0.6200\n",
      "Epoch 2/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6874 - accuracy: 0.7700\n",
      "Epoch 3/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6734 - accuracy: 0.8400\n",
      "Epoch 4/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.6524 - accuracy: 0.8300\n",
      "Epoch 5/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.6266 - accuracy: 0.8400\n",
      "Epoch 6/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.5969 - accuracy: 0.8400\n",
      "Epoch 7/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5662 - accuracy: 0.8500\n",
      "Epoch 8/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5353 - accuracy: 0.8400\n",
      "Epoch 9/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.5054 - accuracy: 0.8400\n",
      "Epoch 10/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4784 - accuracy: 0.8400\n",
      "Epoch 11/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4547 - accuracy: 0.8400\n",
      "Epoch 12/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.4314 - accuracy: 0.8400\n",
      "Epoch 13/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.4120 - accuracy: 0.8400\n",
      "Epoch 14/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3953 - accuracy: 0.8500\n",
      "Epoch 15/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3803 - accuracy: 0.8500\n",
      "Epoch 16/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3680 - accuracy: 0.8500\n",
      "Epoch 17/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3566 - accuracy: 0.8500\n",
      "Epoch 18/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3478 - accuracy: 0.8600\n",
      "Epoch 19/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3399 - accuracy: 0.8500\n",
      "Epoch 20/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3321 - accuracy: 0.8500\n",
      "Epoch 21/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3259 - accuracy: 0.8500\n",
      "Epoch 22/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.3213 - accuracy: 0.8600\n",
      "Epoch 23/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3155 - accuracy: 0.8600\n",
      "Epoch 24/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3115 - accuracy: 0.8500\n",
      "Epoch 25/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3075 - accuracy: 0.8600\n",
      "Epoch 26/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3039 - accuracy: 0.8600\n",
      "Epoch 27/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.3017 - accuracy: 0.8600\n",
      "Epoch 28/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2983 - accuracy: 0.8600\n",
      "Epoch 29/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2961 - accuracy: 0.8600\n",
      "Epoch 30/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2946 - accuracy: 0.8700\n",
      "Epoch 31/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2919 - accuracy: 0.8700\n",
      "Epoch 32/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2898 - accuracy: 0.8700\n",
      "Epoch 33/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2877 - accuracy: 0.8700\n",
      "Epoch 34/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2863 - accuracy: 0.8700\n",
      "Epoch 35/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2854 - accuracy: 0.8600\n",
      "Epoch 36/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2837 - accuracy: 0.8700\n",
      "Epoch 37/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2826 - accuracy: 0.8700\n",
      "Epoch 38/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2811 - accuracy: 0.8700\n",
      "Epoch 39/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2804 - accuracy: 0.8700\n",
      "Epoch 40/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2797 - accuracy: 0.8700\n",
      "Epoch 41/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2778 - accuracy: 0.8700\n",
      "Epoch 42/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2780 - accuracy: 0.8700\n",
      "Epoch 43/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2765 - accuracy: 0.8700\n",
      "Epoch 44/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2760 - accuracy: 0.8700\n",
      "Epoch 45/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2753 - accuracy: 0.8700\n",
      "Epoch 46/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2743 - accuracy: 0.8700\n",
      "Epoch 47/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2738 - accuracy: 0.8700\n",
      "Epoch 48/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2736 - accuracy: 0.8700\n",
      "Epoch 49/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2727 - accuracy: 0.8700\n",
      "Epoch 50/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2722 - accuracy: 0.8700\n",
      "Epoch 51/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2718 - accuracy: 0.8700\n",
      "Epoch 52/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2715 - accuracy: 0.8800\n",
      "Epoch 53/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2712 - accuracy: 0.8800\n",
      "Epoch 54/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2704 - accuracy: 0.8700\n",
      "Epoch 55/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2705 - accuracy: 0.8800\n",
      "Epoch 56/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2699 - accuracy: 0.8800\n",
      "Epoch 57/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2692 - accuracy: 0.8800\n",
      "Epoch 58/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2690 - accuracy: 0.8800\n",
      "Epoch 59/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2686 - accuracy: 0.8800\n",
      "Epoch 60/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2684 - accuracy: 0.8800\n",
      "Epoch 61/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2680 - accuracy: 0.8800\n",
      "Epoch 62/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2682 - accuracy: 0.8800\n",
      "Epoch 63/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2680 - accuracy: 0.8800\n",
      "Epoch 64/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2682 - accuracy: 0.8800\n",
      "Epoch 65/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2679 - accuracy: 0.8800\n",
      "Epoch 66/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2669 - accuracy: 0.8800\n",
      "Epoch 67/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2668 - accuracy: 0.8800\n",
      "Epoch 68/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2663 - accuracy: 0.8800\n",
      "Epoch 69/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2668 - accuracy: 0.8800\n",
      "Epoch 70/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2662 - accuracy: 0.8800\n",
      "Epoch 71/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2660 - accuracy: 0.8800\n",
      "Epoch 72/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2664 - accuracy: 0.8800\n",
      "Epoch 73/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2660 - accuracy: 0.8800\n",
      "Epoch 74/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2665 - accuracy: 0.8800\n",
      "Epoch 75/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2658 - accuracy: 0.8800\n",
      "Epoch 76/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2655 - accuracy: 0.8800\n",
      "Epoch 77/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2657 - accuracy: 0.8800\n",
      "Epoch 78/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2650 - accuracy: 0.8800\n",
      "Epoch 79/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2652 - accuracy: 0.8800\n",
      "Epoch 80/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2651 - accuracy: 0.8800\n",
      "Epoch 81/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2651 - accuracy: 0.8800\n",
      "Epoch 82/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2647 - accuracy: 0.8800\n",
      "Epoch 83/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2647 - accuracy: 0.8800\n",
      "Epoch 84/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2643 - accuracy: 0.8800\n",
      "Epoch 85/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2642 - accuracy: 0.8800\n",
      "Epoch 86/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 87/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2643 - accuracy: 0.8800: 0s - loss: 0.3083 - ac\n",
      "Epoch 88/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2645 - accuracy: 0.8800\n",
      "Epoch 89/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 90/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 91/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2639 - accuracy: 0.8800\n",
      "Epoch 92/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 93/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2641 - accuracy: 0.8800\n",
      "Epoch 94/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2642 - accuracy: 0.8800\n",
      "Epoch 95/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 96/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 97/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 98/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 99/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2645 - accuracy: 0.8800\n",
      "Epoch 100/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2638 - accuracy: 0.8800\n",
      "Epoch 101/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 102/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 103/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 104/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 105/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2637 - accuracy: 0.8800\n",
      "Epoch 106/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 107/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 108/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 109/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 110/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 111/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 112/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 113/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 114/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 115/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2636 - accuracy: 0.8800\n",
      "Epoch 116/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 117/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 118/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 119/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 120/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 121/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 122/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 123/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2631 - accuracy: 0.8800\n",
      "Epoch 124/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 125/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 126/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 127/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 128/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 129/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 130/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 131/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 132/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 133/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2634 - accuracy: 0.8800\n",
      "Epoch 134/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2632 - accuracy: 0.8800\n",
      "Epoch 135/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 136/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 137/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 138/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2633 - accuracy: 0.8800\n",
      "Epoch 139/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 140/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2625 - accuracy: 0.8800\n",
      "Epoch 141/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 142/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 143/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 144/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 145/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 146/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 147/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 148/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 149/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 150/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 151/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 152/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 153/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 154/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2629 - accuracy: 0.8800\n",
      "Epoch 155/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 156/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 157/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 158/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 159/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 160/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2635 - accuracy: 0.8800\n",
      "Epoch 161/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 162/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 163/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 164/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2624 - accuracy: 0.8800\n",
      "Epoch 165/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 166/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 167/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2630 - accuracy: 0.8800\n",
      "Epoch 168/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 169/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 170/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 171/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 172/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2627 - accuracy: 0.8800\n",
      "Epoch 173/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 174/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 175/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 176/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2622 - accuracy: 0.8800\n",
      "Epoch 177/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2616 - accuracy: 0.8800\n",
      "Epoch 178/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 179/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 180/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 181/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 182/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 183/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 184/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 185/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2626 - accuracy: 0.8800\n",
      "Epoch 186/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 187/200\n",
      "100/100 [==============================] - 0s 3ms/step - loss: 0.2620 - accuracy: 0.8800\n",
      "Epoch 188/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 189/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 190/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2618 - accuracy: 0.8800\n",
      "Epoch 191/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2621 - accuracy: 0.8800\n",
      "Epoch 192/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 193/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2619 - accuracy: 0.8800\n",
      "Epoch 194/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2614 - accuracy: 0.8800\n",
      "Epoch 195/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2628 - accuracy: 0.8800\n",
      "Epoch 196/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2623 - accuracy: 0.8800\n",
      "Epoch 197/200\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2617 - accuracy: 0.8800\n",
      "Epoch 198/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 199/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2615 - accuracy: 0.8800\n",
      "Epoch 200/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2618 - accuracy: 0.8800\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x1a38a03940>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_h1 = create_model_h1()\n",
    "model_h1.fit(X, Y, epochs=200, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "Z1 = [0]*len(X)\n",
    "Z2 = [0]*len(X)\n",
    "W1, b1 = model_h1.layers[0].get_weights()\n",
    "W2, b2 = model_h1.layers[1].get_weights()\n",
    "\n",
    "for i in range(len(X)):\n",
    "    x = X[i]\n",
    "    Z1[i], Z2[i] = np.maximum(np.matmul(np.transpose(W1), x) + b1, 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's view the input after transformation through hidden layer 1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(Z1, Z2, s=30, color=colors[Y])\n",
    "\n",
    "W2 = W2.ravel()\n",
    "z1_min = min(Z1)\n",
    "z1_max = max(Z1)\n",
    "\n",
    "z1 = -(b2 + W2[0]*z1_min) / W2[1]\n",
    "z2 = -(b2 + W2[0]*z1_max) / W2[1]\n",
    "\n",
    "plt.plot([z1_min, z1_max], [z1, z2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$Z^{(1)}_1$')\n",
    "plt.ylabel(r'$Z^{(1)}_2$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model_h1, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 1c: Analysis of FFWD Neural Network Model with Two Hidden Layers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Again, we define a function for creating the model, this time with two hidden layers containing two units each."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_model_h2():\n",
    "    # Create model\n",
    "    model = Sequential()\n",
    "    \n",
    "    # Add hidden layer 1...  \n",
    "    model.add(Dense(2, input_dim=2, kernel_initializer='normal', activation='relu')) \n",
    "    # ...hidden layer 2...\n",
    "    model.add(Dense(2, kernel_initializer='normal', activation='relu'))              \n",
    "    # ...and the output layer.\n",
    "    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))           \n",
    "    \n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/200\n",
      "100/100 [==============================] - 4s 44ms/step - loss: 0.6933 - accuracy: 0.5000\n",
      "Epoch 2/200\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.6926 - accuracy: 0.5200\n",
      "Epoch 3/200\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.6896 - accuracy: 0.5000\n",
      "Epoch 4/200\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.6815 - accuracy: 0.5300\n",
      "Epoch 5/200\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.6680 - accuracy: 0.5500\n",
      "Epoch 6/200\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.6496 - accuracy: 0.7700\n",
      "Epoch 7/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.6274 - accuracy: 0.7900\n",
      "Epoch 8/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.6037 - accuracy: 0.8000\n",
      "Epoch 9/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.5822 - accuracy: 0.8200\n",
      "Epoch 10/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.5614 - accuracy: 0.8300\n",
      "Epoch 11/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.5434 - accuracy: 0.8300\n",
      "Epoch 12/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.5281 - accuracy: 0.8400\n",
      "Epoch 13/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.5149 - accuracy: 0.8300\n",
      "Epoch 14/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.5025 - accuracy: 0.8400\n",
      "Epoch 15/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.4917 - accuracy: 0.8500\n",
      "Epoch 16/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4820 - accuracy: 0.8500\n",
      "Epoch 17/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4734 - accuracy: 0.8600\n",
      "Epoch 18/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4653 - accuracy: 0.8500\n",
      "Epoch 19/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4571 - accuracy: 0.8600\n",
      "Epoch 20/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4495 - accuracy: 0.8700\n",
      "Epoch 21/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.4431 - accuracy: 0.8600\n",
      "Epoch 22/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.4364 - accuracy: 0.8600\n",
      "Epoch 23/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.4305 - accuracy: 0.8600\n",
      "Epoch 24/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.4242 - accuracy: 0.8700\n",
      "Epoch 25/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.4182 - accuracy: 0.8600\n",
      "Epoch 26/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4131 - accuracy: 0.8700\n",
      "Epoch 27/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4077 - accuracy: 0.8600\n",
      "Epoch 28/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4035 - accuracy: 0.8700\n",
      "Epoch 29/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3986 - accuracy: 0.8700\n",
      "Epoch 30/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3939 - accuracy: 0.8700\n",
      "Epoch 31/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3899 - accuracy: 0.8700\n",
      "Epoch 32/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3853 - accuracy: 0.8700\n",
      "Epoch 33/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3813 - accuracy: 0.8700\n",
      "Epoch 34/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3783 - accuracy: 0.8700\n",
      "Epoch 35/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3741 - accuracy: 0.8700\n",
      "Epoch 36/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.3712 - accuracy: 0.8700\n",
      "Epoch 37/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3679 - accuracy: 0.8700\n",
      "Epoch 38/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3653 - accuracy: 0.8700\n",
      "Epoch 39/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3623 - accuracy: 0.8800\n",
      "Epoch 40/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3594 - accuracy: 0.8800\n",
      "Epoch 41/200\n",
      "100/100 [==============================] - ETA: 0s - loss: 0.3562 - accuracy: 0.86 - 1s 6ms/step - loss: 0.3562 - accuracy: 0.8700\n",
      "Epoch 42/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3545 - accuracy: 0.8700\n",
      "Epoch 43/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3525 - accuracy: 0.8700\n",
      "Epoch 44/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3488 - accuracy: 0.8700\n",
      "Epoch 45/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3466 - accuracy: 0.8700\n",
      "Epoch 46/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3448 - accuracy: 0.8800\n",
      "Epoch 47/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3429 - accuracy: 0.8700\n",
      "Epoch 48/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3406 - accuracy: 0.8800\n",
      "Epoch 49/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3385 - accuracy: 0.8800\n",
      "Epoch 50/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3372 - accuracy: 0.8800\n",
      "Epoch 51/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3358 - accuracy: 0.8800\n",
      "Epoch 52/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3341 - accuracy: 0.8800\n",
      "Epoch 53/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3334 - accuracy: 0.8800\n",
      "Epoch 54/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3307 - accuracy: 0.8800\n",
      "Epoch 55/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3294 - accuracy: 0.8800\n",
      "Epoch 56/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3288 - accuracy: 0.8800\n",
      "Epoch 57/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.3268 - accuracy: 0.8800\n",
      "Epoch 58/200\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.3252 - accuracy: 0.8800\n",
      "Epoch 59/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3241 - accuracy: 0.8800\n",
      "Epoch 60/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3227 - accuracy: 0.8800\n",
      "Epoch 61/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3230 - accuracy: 0.8800\n",
      "Epoch 62/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3210 - accuracy: 0.8800\n",
      "Epoch 63/200\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.3201 - accuracy: 0.8800\n",
      "Epoch 64/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3196 - accuracy: 0.8800\n",
      "Epoch 65/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3179 - accuracy: 0.8800\n",
      "Epoch 66/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3167 - accuracy: 0.8800\n",
      "Epoch 67/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3170 - accuracy: 0.8800\n",
      "Epoch 68/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3160 - accuracy: 0.8800\n",
      "Epoch 69/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3147 - accuracy: 0.8800\n",
      "Epoch 70/200\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.3149 - accuracy: 0.8800\n",
      "Epoch 71/200\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.3133 - accuracy: 0.8800\n",
      "Epoch 72/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3128 - accuracy: 0.8800\n",
      "Epoch 73/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3124 - accuracy: 0.8800\n",
      "Epoch 74/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3119 - accuracy: 0.8800\n",
      "Epoch 75/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3110 - accuracy: 0.8800\n",
      "Epoch 76/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3096 - accuracy: 0.8800\n",
      "Epoch 77/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3088 - accuracy: 0.8800\n",
      "Epoch 78/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3088 - accuracy: 0.8700\n",
      "Epoch 79/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3099 - accuracy: 0.8800\n",
      "Epoch 80/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3073 - accuracy: 0.8800\n",
      "Epoch 81/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3065 - accuracy: 0.8800\n",
      "Epoch 82/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3059 - accuracy: 0.8800\n",
      "Epoch 83/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3059 - accuracy: 0.8800\n",
      "Epoch 84/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3045 - accuracy: 0.8800\n",
      "Epoch 85/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3042 - accuracy: 0.8800\n",
      "Epoch 86/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3049 - accuracy: 0.8800\n",
      "Epoch 87/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3029 - accuracy: 0.8800\n",
      "Epoch 88/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3024 - accuracy: 0.8800\n",
      "Epoch 89/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3021 - accuracy: 0.8800\n",
      "Epoch 90/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.3016 - accuracy: 0.8800\n",
      "Epoch 91/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3007 - accuracy: 0.8800\n",
      "Epoch 92/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3008 - accuracy: 0.8800\n",
      "Epoch 93/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3005 - accuracy: 0.8800\n",
      "Epoch 94/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2993 - accuracy: 0.8800\n",
      "Epoch 95/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2990 - accuracy: 0.8800\n",
      "Epoch 96/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2991 - accuracy: 0.8800\n",
      "Epoch 97/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2978 - accuracy: 0.8800\n",
      "Epoch 98/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2986 - accuracy: 0.8800\n",
      "Epoch 99/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2978 - accuracy: 0.8800\n",
      "Epoch 100/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2980 - accuracy: 0.8800\n",
      "Epoch 101/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2976 - accuracy: 0.8800\n",
      "Epoch 102/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2961 - accuracy: 0.8800\n",
      "Epoch 103/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2962 - accuracy: 0.8800\n",
      "Epoch 104/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2960 - accuracy: 0.8800\n",
      "Epoch 105/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2955 - accuracy: 0.8800\n",
      "Epoch 106/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2951 - accuracy: 0.8800\n",
      "Epoch 107/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2952 - accuracy: 0.8800\n",
      "Epoch 108/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2953 - accuracy: 0.8800\n",
      "Epoch 109/200\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.2933 - accuracy: 0.8800\n",
      "Epoch 110/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2943 - accuracy: 0.8800\n",
      "Epoch 111/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2937 - accuracy: 0.8800\n",
      "Epoch 112/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2923 - accuracy: 0.8800\n",
      "Epoch 113/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2913 - accuracy: 0.8800\n",
      "Epoch 114/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2933 - accuracy: 0.8700\n",
      "Epoch 115/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2908 - accuracy: 0.8800\n",
      "Epoch 116/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2901 - accuracy: 0.8800: 0s - loss: 0.3380 - ac\n",
      "Epoch 117/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2903 - accuracy: 0.8800\n",
      "Epoch 118/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2903 - accuracy: 0.8800\n",
      "Epoch 119/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2895 - accuracy: 0.8800\n",
      "Epoch 120/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2895 - accuracy: 0.8800\n",
      "Epoch 121/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2886 - accuracy: 0.8800\n",
      "Epoch 122/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2894 - accuracy: 0.8800\n",
      "Epoch 123/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2897 - accuracy: 0.8800\n",
      "Epoch 124/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2885 - accuracy: 0.8800\n",
      "Epoch 125/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2879 - accuracy: 0.8800\n",
      "Epoch 126/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2879 - accuracy: 0.8800\n",
      "Epoch 127/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2868 - accuracy: 0.8800\n",
      "Epoch 128/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2863 - accuracy: 0.8800\n",
      "Epoch 129/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2858 - accuracy: 0.8800\n",
      "Epoch 130/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2858 - accuracy: 0.8800\n",
      "Epoch 131/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2861 - accuracy: 0.8800\n",
      "Epoch 132/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2864 - accuracy: 0.8800\n",
      "Epoch 133/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2862 - accuracy: 0.8700\n",
      "Epoch 134/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2845 - accuracy: 0.8800\n",
      "Epoch 135/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2853 - accuracy: 0.8800\n",
      "Epoch 136/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2842 - accuracy: 0.8800\n",
      "Epoch 137/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2844 - accuracy: 0.8800\n",
      "Epoch 138/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2834 - accuracy: 0.8800\n",
      "Epoch 139/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2841 - accuracy: 0.8800\n",
      "Epoch 140/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2843 - accuracy: 0.8800\n",
      "Epoch 141/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2836 - accuracy: 0.8800\n",
      "Epoch 142/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2829 - accuracy: 0.8800\n",
      "Epoch 143/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2824 - accuracy: 0.8800\n",
      "Epoch 144/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2833 - accuracy: 0.8800\n",
      "Epoch 145/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2822 - accuracy: 0.8800\n",
      "Epoch 146/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2818 - accuracy: 0.8800\n",
      "Epoch 147/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2815 - accuracy: 0.8800\n",
      "Epoch 148/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2813 - accuracy: 0.8800\n",
      "Epoch 149/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2813 - accuracy: 0.8800\n",
      "Epoch 150/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2809 - accuracy: 0.8800\n",
      "Epoch 151/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2809 - accuracy: 0.8800\n",
      "Epoch 152/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2808 - accuracy: 0.8800\n",
      "Epoch 153/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2802 - accuracy: 0.8800\n",
      "Epoch 154/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2807 - accuracy: 0.8900\n",
      "Epoch 155/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2800 - accuracy: 0.8800\n",
      "Epoch 156/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2803 - accuracy: 0.8800\n",
      "Epoch 157/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2801 - accuracy: 0.8800\n",
      "Epoch 158/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2793 - accuracy: 0.8800\n",
      "Epoch 159/200\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2793 - accuracy: 0.8800\n",
      "Epoch 160/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2799 - accuracy: 0.8800\n",
      "Epoch 161/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2799 - accuracy: 0.8800\n",
      "Epoch 162/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2803 - accuracy: 0.8800\n",
      "Epoch 163/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2786 - accuracy: 0.8800\n",
      "Epoch 164/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2782 - accuracy: 0.8800\n",
      "Epoch 165/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2782 - accuracy: 0.8800\n",
      "Epoch 166/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2783 - accuracy: 0.8800\n",
      "Epoch 167/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2781 - accuracy: 0.8800\n",
      "Epoch 168/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2781 - accuracy: 0.8800\n",
      "Epoch 169/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2776 - accuracy: 0.8800\n",
      "Epoch 170/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2786 - accuracy: 0.8800\n",
      "Epoch 171/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2779 - accuracy: 0.8800\n",
      "Epoch 172/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2776 - accuracy: 0.8800\n",
      "Epoch 173/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2771 - accuracy: 0.8800\n",
      "Epoch 174/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2780 - accuracy: 0.8800\n",
      "Epoch 175/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2770 - accuracy: 0.8800\n",
      "Epoch 176/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2773 - accuracy: 0.8800\n",
      "Epoch 177/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2778 - accuracy: 0.8800\n",
      "Epoch 178/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2766 - accuracy: 0.8800\n",
      "Epoch 179/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2762 - accuracy: 0.8800\n",
      "Epoch 180/200\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.2771 - accuracy: 0.8800\n",
      "Epoch 181/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2766 - accuracy: 0.8800\n",
      "Epoch 182/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2770 - accuracy: 0.8900\n",
      "Epoch 183/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2758 - accuracy: 0.8800\n",
      "Epoch 184/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2765 - accuracy: 0.8800\n",
      "Epoch 185/200\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2757 - accuracy: 0.8800\n",
      "Epoch 186/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2757 - accuracy: 0.8800\n",
      "Epoch 187/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2753 - accuracy: 0.8800\n",
      "Epoch 188/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2755 - accuracy: 0.8800\n",
      "Epoch 189/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2762 - accuracy: 0.8900\n",
      "Epoch 190/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2755 - accuracy: 0.8800\n",
      "Epoch 191/200\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2750 - accuracy: 0.8800\n",
      "Epoch 192/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2752 - accuracy: 0.8800\n",
      "Epoch 193/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2752 - accuracy: 0.8800\n",
      "Epoch 194/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2750 - accuracy: 0.8800\n",
      "Epoch 195/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2742 - accuracy: 0.8800\n",
      "Epoch 196/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2753 - accuracy: 0.8800\n",
      "Epoch 197/200\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2748 - accuracy: 0.8800\n",
      "Epoch 198/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2748 - accuracy: 0.8800\n",
      "Epoch 199/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2768 - accuracy: 0.8800\n",
      "Epoch 200/200\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2745 - accuracy: 0.8800\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x1a367fd780>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_h2 = create_model_h2()\n",
    "model_h2.fit(X, Y, epochs=200, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "Z1 = [0]*len(X)\n",
    "Z2 = [0]*len(X)\n",
    "\n",
    "W1, b1 = model_h2.layers[0].get_weights()\n",
    "W2, b2 = model_h2.layers[1].get_weights()\n",
    "W3, b3 = model_h2.layers[2].get_weights()\n",
    "\n",
    "for i in range(len(X)):\n",
    "    x = X[i]\n",
    "    z = np.maximum(np.matmul(np.transpose(W1), x) + b1, 0)\n",
    "    Z1[i], Z2[i] = np.maximum(np.matmul(np.transpose(W2), z) + b2, 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's view the input after transformation through hidden layer 1 and 2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(Z1, Z2, s=30, color=colors[Y])\n",
    "\n",
    "W3 = W3.ravel()\n",
    "z1_min = min(Z1)\n",
    "z1_max = max(Z1)\n",
    "\n",
    "z1 = -(b3 + W3[0]*z1_min) / W3[1]\n",
    "z2 = -(b3 + W3[0]*z1_max) / W3[1]\n",
    "\n",
    "plt.plot([z1_min, z1_max], [z1, z2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$Z^{(2)}_1$')\n",
    "plt.ylabel(r'$Z^{(2)}_2$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model_h2, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model H1: many hidden units"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This time we observe the effect of a hidden layer with many neurons"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_model_h1_many():\n",
    "    # create model\n",
    "    model = Sequential()\n",
    "    \n",
    "    # Add a hidden layer with 75 units\n",
    "    model.add(Dense(75, input_dim=2, kernel_initializer='normal', activation='relu')) \n",
    "    # And again, a single output node\n",
    "    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid')) \n",
    "\n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/300\n",
      "100/100 [==============================] - 3s 29ms/step - loss: 0.6664 - accuracy: 0.7500\n",
      "Epoch 2/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.5493 - accuracy: 0.8300\n",
      "Epoch 3/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4218 - accuracy: 0.8400\n",
      "Epoch 4/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3525 - accuracy: 0.8500\n",
      "Epoch 5/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.3198 - accuracy: 0.8500\n",
      "Epoch 6/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3027 - accuracy: 0.8500\n",
      "Epoch 7/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2902 - accuracy: 0.8600\n",
      "Epoch 8/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2810 - accuracy: 0.8700\n",
      "Epoch 9/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2786 - accuracy: 0.8700\n",
      "Epoch 10/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2691 - accuracy: 0.8700\n",
      "Epoch 11/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2652 - accuracy: 0.8700\n",
      "Epoch 12/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2590 - accuracy: 0.8700\n",
      "Epoch 13/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2574 - accuracy: 0.8800\n",
      "Epoch 14/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2539 - accuracy: 0.8900\n",
      "Epoch 15/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2499 - accuracy: 0.8800\n",
      "Epoch 16/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2488 - accuracy: 0.8800\n",
      "Epoch 17/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2462 - accuracy: 0.8900\n",
      "Epoch 18/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2421 - accuracy: 0.8900\n",
      "Epoch 19/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2432 - accuracy: 0.8700\n",
      "Epoch 20/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2381 - accuracy: 0.8800\n",
      "Epoch 21/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2389 - accuracy: 0.8800\n",
      "Epoch 22/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2363 - accuracy: 0.8800\n",
      "Epoch 23/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2343 - accuracy: 0.9000\n",
      "Epoch 24/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2339 - accuracy: 0.8800\n",
      "Epoch 25/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2314 - accuracy: 0.8800\n",
      "Epoch 26/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2308 - accuracy: 0.8900\n",
      "Epoch 27/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2287 - accuracy: 0.8800\n",
      "Epoch 28/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2306 - accuracy: 0.8800\n",
      "Epoch 29/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2297 - accuracy: 0.8800\n",
      "Epoch 30/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2286 - accuracy: 0.8900\n",
      "Epoch 31/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2287 - accuracy: 0.8900\n",
      "Epoch 32/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2268 - accuracy: 0.8800\n",
      "Epoch 33/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2255 - accuracy: 0.8700\n",
      "Epoch 34/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2258 - accuracy: 0.8800\n",
      "Epoch 35/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2276 - accuracy: 0.8900\n",
      "Epoch 36/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2241 - accuracy: 0.9000\n",
      "Epoch 37/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2243 - accuracy: 0.8900\n",
      "Epoch 38/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2227 - accuracy: 0.9100\n",
      "Epoch 39/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2246 - accuracy: 0.8900\n",
      "Epoch 40/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2235 - accuracy: 0.8900\n",
      "Epoch 41/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2241 - accuracy: 0.8700\n",
      "Epoch 42/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2264 - accuracy: 0.8800\n",
      "Epoch 43/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2216 - accuracy: 0.9000\n",
      "Epoch 44/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.2225 - accuracy: 0.9000\n",
      "Epoch 45/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2229 - accuracy: 0.8900\n",
      "Epoch 46/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2256 - accuracy: 0.8800\n",
      "Epoch 47/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2226 - accuracy: 0.8900\n",
      "Epoch 48/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2212 - accuracy: 0.8900\n",
      "Epoch 49/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2201 - accuracy: 0.8800\n",
      "Epoch 50/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2208 - accuracy: 0.8900\n",
      "Epoch 51/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2225 - accuracy: 0.8800\n",
      "Epoch 52/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2211 - accuracy: 0.8800\n",
      "Epoch 53/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2232 - accuracy: 0.8800\n",
      "Epoch 54/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2211 - accuracy: 0.8900\n",
      "Epoch 55/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2187 - accuracy: 0.8900\n",
      "Epoch 56/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2182 - accuracy: 0.8900\n",
      "Epoch 57/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2187 - accuracy: 0.8900\n",
      "Epoch 58/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2180 - accuracy: 0.8900\n",
      "Epoch 59/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2177 - accuracy: 0.8900\n",
      "Epoch 60/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2189 - accuracy: 0.8900\n",
      "Epoch 61/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2179 - accuracy: 0.8800\n",
      "Epoch 62/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2172 - accuracy: 0.8800\n",
      "Epoch 63/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2154 - accuracy: 0.8800\n",
      "Epoch 64/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2161 - accuracy: 0.8900\n",
      "Epoch 65/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2205 - accuracy: 0.8800\n",
      "Epoch 66/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2148 - accuracy: 0.8900\n",
      "Epoch 67/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2147 - accuracy: 0.8900\n",
      "Epoch 68/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2137 - accuracy: 0.8900\n",
      "Epoch 69/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2143 - accuracy: 0.8900\n",
      "Epoch 70/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2146 - accuracy: 0.8900\n",
      "Epoch 71/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2137 - accuracy: 0.8800\n",
      "Epoch 72/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2154 - accuracy: 0.8900\n",
      "Epoch 73/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2140 - accuracy: 0.8900\n",
      "Epoch 74/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2122 - accuracy: 0.9000\n",
      "Epoch 75/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2145 - accuracy: 0.8900\n",
      "Epoch 76/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2103 - accuracy: 0.8900\n",
      "Epoch 77/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2100 - accuracy: 0.8900\n",
      "Epoch 78/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.2091 - accuracy: 0.8900\n",
      "Epoch 79/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2114 - accuracy: 0.8900\n",
      "Epoch 80/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2103 - accuracy: 0.9000\n",
      "Epoch 81/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2109 - accuracy: 0.8900\n",
      "Epoch 82/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2091 - accuracy: 0.8900\n",
      "Epoch 83/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2058 - accuracy: 0.9000\n",
      "Epoch 84/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2079 - accuracy: 0.8900\n",
      "Epoch 85/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2067 - accuracy: 0.8900\n",
      "Epoch 86/300\n",
      "100/100 [==============================] - 1s 10ms/step - loss: 0.2055 - accuracy: 0.8900\n",
      "Epoch 87/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2054 - accuracy: 0.9000\n",
      "Epoch 88/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2077 - accuracy: 0.8900\n",
      "Epoch 89/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2039 - accuracy: 0.9100\n",
      "Epoch 90/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2028 - accuracy: 0.9000\n",
      "Epoch 91/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2054 - accuracy: 0.9000\n",
      "Epoch 92/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2032 - accuracy: 0.9000\n",
      "Epoch 93/300\n",
      "100/100 [==============================] - ETA: 0s - loss: 0.2091 - accuracy: 0.88 - 1s 5ms/step - loss: 0.2032 - accuracy: 0.8900\n",
      "Epoch 94/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2034 - accuracy: 0.9100\n",
      "Epoch 95/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2025 - accuracy: 0.8900\n",
      "Epoch 96/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1998 - accuracy: 0.9000\n",
      "Epoch 97/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1977 - accuracy: 0.8900\n",
      "Epoch 98/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1978 - accuracy: 0.9000\n",
      "Epoch 99/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2012 - accuracy: 0.8900\n",
      "Epoch 100/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1993 - accuracy: 0.9000\n",
      "Epoch 101/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1967 - accuracy: 0.8900\n",
      "Epoch 102/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1968 - accuracy: 0.9000\n",
      "Epoch 103/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1957 - accuracy: 0.8900\n",
      "Epoch 104/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1947 - accuracy: 0.9100\n",
      "Epoch 105/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1944 - accuracy: 0.9100\n",
      "Epoch 106/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1933 - accuracy: 0.9000\n",
      "Epoch 107/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1949 - accuracy: 0.9100\n",
      "Epoch 108/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1923 - accuracy: 0.9000\n",
      "Epoch 109/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1921 - accuracy: 0.8900\n",
      "Epoch 110/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1898 - accuracy: 0.9100\n",
      "Epoch 111/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1914 - accuracy: 0.9000\n",
      "Epoch 112/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1896 - accuracy: 0.9000\n",
      "Epoch 113/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1932 - accuracy: 0.9100\n",
      "Epoch 114/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1880 - accuracy: 0.9100\n",
      "Epoch 115/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1850 - accuracy: 0.9200\n",
      "Epoch 116/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1845 - accuracy: 0.9200\n",
      "Epoch 117/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1850 - accuracy: 0.9000\n",
      "Epoch 118/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1837 - accuracy: 0.9000\n",
      "Epoch 119/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1871 - accuracy: 0.9100\n",
      "Epoch 120/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1832 - accuracy: 0.9000\n",
      "Epoch 121/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1811 - accuracy: 0.9000\n",
      "Epoch 122/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1803 - accuracy: 0.9100\n",
      "Epoch 123/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1816 - accuracy: 0.9000\n",
      "Epoch 124/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1790 - accuracy: 0.9100\n",
      "Epoch 125/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1765 - accuracy: 0.9200\n",
      "Epoch 126/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1752 - accuracy: 0.9200\n",
      "Epoch 127/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1779 - accuracy: 0.9100\n",
      "Epoch 128/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1747 - accuracy: 0.9100\n",
      "Epoch 129/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1757 - accuracy: 0.9200\n",
      "Epoch 130/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1741 - accuracy: 0.9200\n",
      "Epoch 131/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1740 - accuracy: 0.9200\n",
      "Epoch 132/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1723 - accuracy: 0.9200\n",
      "Epoch 133/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1715 - accuracy: 0.9200\n",
      "Epoch 134/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1697 - accuracy: 0.9200\n",
      "Epoch 135/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1679 - accuracy: 0.9200\n",
      "Epoch 136/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1671 - accuracy: 0.9200\n",
      "Epoch 137/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1667 - accuracy: 0.9200\n",
      "Epoch 138/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1666 - accuracy: 0.9100\n",
      "Epoch 139/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1644 - accuracy: 0.9400\n",
      "Epoch 140/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1644 - accuracy: 0.9300\n",
      "Epoch 141/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1633 - accuracy: 0.9300\n",
      "Epoch 142/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.1619 - accuracy: 0.9200\n",
      "Epoch 143/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.1607 - accuracy: 0.9200\n",
      "Epoch 144/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1617 - accuracy: 0.9100\n",
      "Epoch 145/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1593 - accuracy: 0.9300\n",
      "Epoch 146/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1601 - accuracy: 0.9300\n",
      "Epoch 147/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1554 - accuracy: 0.9400\n",
      "Epoch 148/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1557 - accuracy: 0.9300\n",
      "Epoch 149/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1541 - accuracy: 0.9200\n",
      "Epoch 150/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1526 - accuracy: 0.9300\n",
      "Epoch 151/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1499 - accuracy: 0.9400\n",
      "Epoch 152/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1522 - accuracy: 0.9300\n",
      "Epoch 153/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1508 - accuracy: 0.9400\n",
      "Epoch 154/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1536 - accuracy: 0.9400\n",
      "Epoch 155/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1473 - accuracy: 0.9300\n",
      "Epoch 156/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1488 - accuracy: 0.9400\n",
      "Epoch 157/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1464 - accuracy: 0.9400\n",
      "Epoch 158/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1467 - accuracy: 0.9300\n",
      "Epoch 159/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1431 - accuracy: 0.9500\n",
      "Epoch 160/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1456 - accuracy: 0.9300\n",
      "Epoch 161/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1437 - accuracy: 0.9400\n",
      "Epoch 162/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1413 - accuracy: 0.9400\n",
      "Epoch 163/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1417 - accuracy: 0.9400\n",
      "Epoch 164/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1403 - accuracy: 0.9500\n",
      "Epoch 165/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1377 - accuracy: 0.9400\n",
      "Epoch 166/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1369 - accuracy: 0.9400\n",
      "Epoch 167/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1365 - accuracy: 0.9400\n",
      "Epoch 168/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1345 - accuracy: 0.9400\n",
      "Epoch 169/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1333 - accuracy: 0.9500\n",
      "Epoch 170/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1324 - accuracy: 0.9500\n",
      "Epoch 171/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1334 - accuracy: 0.9500\n",
      "Epoch 172/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1308 - accuracy: 0.9500\n",
      "Epoch 173/300\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.1288 - accuracy: 0.9400\n",
      "Epoch 174/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.1299 - accuracy: 0.9500\n",
      "Epoch 175/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1289 - accuracy: 0.9500\n",
      "Epoch 176/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1271 - accuracy: 0.9500\n",
      "Epoch 177/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1273 - accuracy: 0.9500\n",
      "Epoch 178/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1257 - accuracy: 0.9500\n",
      "Epoch 179/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1231 - accuracy: 0.9500\n",
      "Epoch 180/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1227 - accuracy: 0.9600\n",
      "Epoch 181/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1218 - accuracy: 0.9500\n",
      "Epoch 182/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1199 - accuracy: 0.9500\n",
      "Epoch 183/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1193 - accuracy: 0.9500\n",
      "Epoch 184/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1187 - accuracy: 0.9600\n",
      "Epoch 185/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1212 - accuracy: 0.9500\n",
      "Epoch 186/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1179 - accuracy: 0.9500\n",
      "Epoch 187/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1153 - accuracy: 0.9500\n",
      "Epoch 188/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1163 - accuracy: 0.9600\n",
      "Epoch 189/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1131 - accuracy: 0.9600\n",
      "Epoch 190/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1121 - accuracy: 0.9600\n",
      "Epoch 191/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1109 - accuracy: 0.9600\n",
      "Epoch 192/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1096 - accuracy: 0.9600\n",
      "Epoch 193/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1102 - accuracy: 0.9500\n",
      "Epoch 194/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1091 - accuracy: 0.9700\n",
      "Epoch 195/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1085 - accuracy: 0.9600\n",
      "Epoch 196/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1063 - accuracy: 0.9700\n",
      "Epoch 197/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1072 - accuracy: 0.9700\n",
      "Epoch 198/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1043 - accuracy: 0.9800\n",
      "Epoch 199/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1057 - accuracy: 0.9600\n",
      "Epoch 200/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1043 - accuracy: 0.9600\n",
      "Epoch 201/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1022 - accuracy: 0.9700\n",
      "Epoch 202/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1020 - accuracy: 0.9600\n",
      "Epoch 203/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1013 - accuracy: 0.9700\n",
      "Epoch 204/300\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.0994 - accuracy: 0.9700\n",
      "Epoch 205/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1011 - accuracy: 0.9700\n",
      "Epoch 206/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0982 - accuracy: 0.9600\n",
      "Epoch 207/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0983 - accuracy: 0.9700\n",
      "Epoch 208/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0955 - accuracy: 0.9700\n",
      "Epoch 209/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0948 - accuracy: 0.9700\n",
      "Epoch 210/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0952 - accuracy: 0.9700\n",
      "Epoch 211/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0928 - accuracy: 0.9700\n",
      "Epoch 212/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0932 - accuracy: 0.9700\n",
      "Epoch 213/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0935 - accuracy: 0.9800\n",
      "Epoch 214/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0928 - accuracy: 0.9600\n",
      "Epoch 215/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0904 - accuracy: 0.9800\n",
      "Epoch 216/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0875 - accuracy: 0.9800\n",
      "Epoch 217/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0931 - accuracy: 0.9800\n",
      "Epoch 218/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0865 - accuracy: 0.9700\n",
      "Epoch 219/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0853 - accuracy: 0.9800\n",
      "Epoch 220/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0828 - accuracy: 0.9900\n",
      "Epoch 221/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0863 - accuracy: 0.9700\n",
      "Epoch 222/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0853 - accuracy: 0.9800\n",
      "Epoch 223/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0832 - accuracy: 0.9800\n",
      "Epoch 224/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0820 - accuracy: 0.9800\n",
      "Epoch 225/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0824 - accuracy: 0.9800\n",
      "Epoch 226/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0815 - accuracy: 0.9700\n",
      "Epoch 227/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0791 - accuracy: 0.9700\n",
      "Epoch 228/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0792 - accuracy: 0.9800\n",
      "Epoch 229/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0790 - accuracy: 0.9800\n",
      "Epoch 230/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0781 - accuracy: 0.9900\n",
      "Epoch 231/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0763 - accuracy: 0.9800\n",
      "Epoch 232/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0785 - accuracy: 0.9700\n",
      "Epoch 233/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0733 - accuracy: 0.9800\n",
      "Epoch 234/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0727 - accuracy: 0.9800\n",
      "Epoch 235/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0748 - accuracy: 0.9800\n",
      "Epoch 236/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0732 - accuracy: 0.9900\n",
      "Epoch 237/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0697 - accuracy: 0.9800\n",
      "Epoch 238/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0725 - accuracy: 0.9800\n",
      "Epoch 239/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0688 - accuracy: 0.9800\n",
      "Epoch 240/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0674 - accuracy: 0.9800\n",
      "Epoch 241/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0670 - accuracy: 0.9900\n",
      "Epoch 242/300\n",
      "100/100 [==============================] - ETA: 0s - loss: 0.0702 - accuracy: 0.98 - 1s 6ms/step - loss: 0.0666 - accuracy: 0.9900\n",
      "Epoch 243/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0653 - accuracy: 0.9800\n",
      "Epoch 244/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0644 - accuracy: 0.9800\n",
      "Epoch 245/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0625 - accuracy: 0.9900\n",
      "Epoch 246/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0619 - accuracy: 0.9800\n",
      "Epoch 247/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0636 - accuracy: 0.9900\n",
      "Epoch 248/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0608 - accuracy: 0.9900\n",
      "Epoch 249/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0588 - accuracy: 0.9800\n",
      "Epoch 250/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0582 - accuracy: 0.9900\n",
      "Epoch 251/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0556 - accuracy: 0.9900\n",
      "Epoch 252/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0566 - accuracy: 0.9900\n",
      "Epoch 253/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0544 - accuracy: 0.9900\n",
      "Epoch 254/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0543 - accuracy: 0.9900\n",
      "Epoch 255/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0523 - accuracy: 0.9900\n",
      "Epoch 256/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0517 - accuracy: 1.0000\n",
      "Epoch 257/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0500 - accuracy: 1.0000\n",
      "Epoch 258/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0488 - accuracy: 0.9900\n",
      "Epoch 259/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0483 - accuracy: 1.0000\n",
      "Epoch 260/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0466 - accuracy: 1.0000\n",
      "Epoch 261/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0466 - accuracy: 0.9900\n",
      "Epoch 262/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0440 - accuracy: 1.0000\n",
      "Epoch 263/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0431 - accuracy: 0.9900\n",
      "Epoch 264/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0422 - accuracy: 1.0000\n",
      "Epoch 265/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0407 - accuracy: 0.9900\n",
      "Epoch 266/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0405 - accuracy: 1.0000\n",
      "Epoch 267/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0389 - accuracy: 1.0000\n",
      "Epoch 268/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0373 - accuracy: 1.0000\n",
      "Epoch 269/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0363 - accuracy: 1.0000\n",
      "Epoch 270/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0351 - accuracy: 1.0000\n",
      "Epoch 271/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0338 - accuracy: 1.0000\n",
      "Epoch 272/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0335 - accuracy: 1.0000\n",
      "Epoch 273/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0329 - accuracy: 1.0000\n",
      "Epoch 274/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0316 - accuracy: 1.0000\n",
      "Epoch 275/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0309 - accuracy: 1.0000\n",
      "Epoch 276/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0301 - accuracy: 1.0000\n",
      "Epoch 277/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0291 - accuracy: 1.0000\n",
      "Epoch 278/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0286 - accuracy: 1.0000\n",
      "Epoch 279/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0271 - accuracy: 1.0000\n",
      "Epoch 280/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0263 - accuracy: 1.0000\n",
      "Epoch 281/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0253 - accuracy: 1.0000\n",
      "Epoch 282/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.0251 - accuracy: 1.0000\n",
      "Epoch 283/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0246 - accuracy: 1.0000\n",
      "Epoch 284/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0231 - accuracy: 1.0000\n",
      "Epoch 285/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0228 - accuracy: 1.0000\n",
      "Epoch 286/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0214 - accuracy: 1.0000\n",
      "Epoch 287/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0214 - accuracy: 1.0000\n",
      "Epoch 288/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0206 - accuracy: 1.0000\n",
      "Epoch 289/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0201 - accuracy: 1.0000\n",
      "Epoch 290/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0190 - accuracy: 1.0000\n",
      "Epoch 291/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0184 - accuracy: 1.0000\n",
      "Epoch 292/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0177 - accuracy: 1.0000\n",
      "Epoch 293/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0174 - accuracy: 1.0000\n",
      "Epoch 294/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0167 - accuracy: 1.0000\n",
      "Epoch 295/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0161 - accuracy: 1.0000\n",
      "Epoch 296/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0157 - accuracy: 1.0000\n",
      "Epoch 297/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0152 - accuracy: 1.0000\n",
      "Epoch 298/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0147 - accuracy: 1.0000\n",
      "Epoch 299/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0143 - accuracy: 1.0000\n",
      "Epoch 300/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0142 - accuracy: 1.0000\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x12ee31f28>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_h1_many = create_model_h1_many()\n",
    "model_h1_many.fit(X, Y, epochs=300, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "Z1 = [0]*len(X)\n",
    "Z2 = [0]*len(X)\n",
    "W1, b1 = model_h1_many.layers[0].get_weights()\n",
    "W2, b2 = model_h1_many.layers[1].get_weights()\n",
    "\n",
    "for i in range(len(X)):\n",
    "    x = X[i]\n",
    "    hidden_layer_activations = np.maximum(np.matmul(np.transpose(W1), x) + b1, 0)\n",
    "    Z1[i] = hidden_layer_activations[0]\n",
    "    Z2[i] = hidden_layer_activations[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that in this example the dimensionality of Z is much higher than 2. For each input point, we are simply plotting the activations of two of the hidden layer's 75 neurons. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(Z1, Z2, s=30, color=colors[Y])\n",
    "\n",
    "W2 = W2.ravel()\n",
    "z1_min = min(Z1)\n",
    "z1_max = max(Z1)\n",
    "\n",
    "z1 = -(b2 + W2[0]*z1_min) / W2[1]\n",
    "z2 = -(b2 + W2[0]*z1_max) / W2[1]\n",
    "\n",
    "plt.plot([z1_min, z1_max], [z1, z2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$Z^{(1)}_1$')\n",
    "plt.ylabel(r'$Z^{(1)}_2$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model_h1_many, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 2: How many hidden units?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also study the effect of changing the number if perceptron units. Staying with the two layer model and repeating the analysis above..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_model_h2_many():\n",
    "    # Create model\n",
    "    model = Sequential()\n",
    "    \n",
    "    # Add two hidden layers, with 50 units in the first...\n",
    "    model.add(Dense(50, input_dim=2, kernel_initializer='normal', activation='relu'))\n",
    "    # ...two in the second...\n",
    "    model.add(Dense(2, kernel_initializer='normal', activation='relu'))\n",
    "    # ...and a single output\n",
    "    model.add(Dense(1, kernel_initializer='normal', activation='sigmoid'))\n",
    "\n",
    "    # Compile model\n",
    "    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/300\n",
      "100/100 [==============================] - 3s 34ms/step - loss: 0.6925 - accuracy: 0.5500\n",
      "Epoch 2/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.6812 - accuracy: 0.7900\n",
      "Epoch 3/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.6386 - accuracy: 0.7900\n",
      "Epoch 4/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.5850 - accuracy: 0.8100\n",
      "Epoch 5/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.5444 - accuracy: 0.8300\n",
      "Epoch 6/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.5205 - accuracy: 0.8400\n",
      "Epoch 7/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.5035 - accuracy: 0.8400\n",
      "Epoch 8/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.4857 - accuracy: 0.8600\n",
      "Epoch 9/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.4762 - accuracy: 0.8500\n",
      "Epoch 10/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4607 - accuracy: 0.8600\n",
      "Epoch 11/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.4506 - accuracy: 0.8700\n",
      "Epoch 12/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.4414 - accuracy: 0.8800\n",
      "Epoch 13/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.4353 - accuracy: 0.8800\n",
      "Epoch 14/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.4254 - accuracy: 0.8800\n",
      "Epoch 15/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4194 - accuracy: 0.8800\n",
      "Epoch 16/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.4131 - accuracy: 0.8800\n",
      "Epoch 17/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4063 - accuracy: 0.8800\n",
      "Epoch 18/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.4017 - accuracy: 0.8800\n",
      "Epoch 19/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3961 - accuracy: 0.8700\n",
      "Epoch 20/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3910 - accuracy: 0.8800\n",
      "Epoch 21/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3867 - accuracy: 0.8800\n",
      "Epoch 22/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3847 - accuracy: 0.8800\n",
      "Epoch 23/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3786 - accuracy: 0.8800\n",
      "Epoch 24/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3757 - accuracy: 0.8800\n",
      "Epoch 25/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3698 - accuracy: 0.8900\n",
      "Epoch 26/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3671 - accuracy: 0.8800\n",
      "Epoch 27/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3630 - accuracy: 0.8800\n",
      "Epoch 28/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3600 - accuracy: 0.8800\n",
      "Epoch 29/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3573 - accuracy: 0.8800\n",
      "Epoch 30/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3564 - accuracy: 0.8800\n",
      "Epoch 31/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3509 - accuracy: 0.8800\n",
      "Epoch 32/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3504 - accuracy: 0.8800\n",
      "Epoch 33/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3449 - accuracy: 0.8900\n",
      "Epoch 34/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3424 - accuracy: 0.8800\n",
      "Epoch 35/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3385 - accuracy: 0.8800\n",
      "Epoch 36/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3362 - accuracy: 0.8800\n",
      "Epoch 37/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3341 - accuracy: 0.8800\n",
      "Epoch 38/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3310 - accuracy: 0.8900\n",
      "Epoch 39/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3292 - accuracy: 0.8900\n",
      "Epoch 40/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3273 - accuracy: 0.8800\n",
      "Epoch 41/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3233 - accuracy: 0.8800\n",
      "Epoch 42/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3233 - accuracy: 0.8900\n",
      "Epoch 43/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.3199 - accuracy: 0.8900\n",
      "Epoch 44/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3154 - accuracy: 0.8900\n",
      "Epoch 45/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3136 - accuracy: 0.8900\n",
      "Epoch 46/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3116 - accuracy: 0.8800: 0s - loss: 0.3843 - \n",
      "Epoch 47/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3090 - accuracy: 0.8900\n",
      "Epoch 48/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3037 - accuracy: 0.9000\n",
      "Epoch 49/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.3001 - accuracy: 0.9000\n",
      "Epoch 50/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2965 - accuracy: 0.8900\n",
      "Epoch 51/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2915 - accuracy: 0.8900\n",
      "Epoch 52/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2882 - accuracy: 0.9000\n",
      "Epoch 53/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2828 - accuracy: 0.9000\n",
      "Epoch 54/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.2816 - accuracy: 0.8900\n",
      "Epoch 55/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2786 - accuracy: 0.9100\n",
      "Epoch 56/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2733 - accuracy: 0.8900\n",
      "Epoch 57/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2711 - accuracy: 0.9100\n",
      "Epoch 58/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2687 - accuracy: 0.9100\n",
      "Epoch 59/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2656 - accuracy: 0.9100\n",
      "Epoch 60/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2645 - accuracy: 0.9100\n",
      "Epoch 61/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2597 - accuracy: 0.9100\n",
      "Epoch 62/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2587 - accuracy: 0.9100\n",
      "Epoch 63/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2562 - accuracy: 0.9000\n",
      "Epoch 64/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2534 - accuracy: 0.9200\n",
      "Epoch 65/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2516 - accuracy: 0.9000\n",
      "Epoch 66/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2474 - accuracy: 0.9000\n",
      "Epoch 67/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2449 - accuracy: 0.9100\n",
      "Epoch 68/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2435 - accuracy: 0.9100\n",
      "Epoch 69/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2420 - accuracy: 0.9100\n",
      "Epoch 70/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2367 - accuracy: 0.9100\n",
      "Epoch 71/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2362 - accuracy: 0.9200\n",
      "Epoch 72/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2358 - accuracy: 0.9100\n",
      "Epoch 73/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2316 - accuracy: 0.9100\n",
      "Epoch 74/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2296 - accuracy: 0.9100\n",
      "Epoch 75/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2282 - accuracy: 0.9100\n",
      "Epoch 76/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2255 - accuracy: 0.9300\n",
      "Epoch 77/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2254 - accuracy: 0.9100\n",
      "Epoch 78/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2204 - accuracy: 0.9300\n",
      "Epoch 79/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2207 - accuracy: 0.9200\n",
      "Epoch 80/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2194 - accuracy: 0.9100\n",
      "Epoch 81/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2181 - accuracy: 0.9300\n",
      "Epoch 82/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2149 - accuracy: 0.9300\n",
      "Epoch 83/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2115 - accuracy: 0.9300\n",
      "Epoch 84/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2096 - accuracy: 0.9300\n",
      "Epoch 85/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2055 - accuracy: 0.9300: 0s - loss: 0.1993 - accuracy: \n",
      "Epoch 86/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.2048 - accuracy: 0.9200\n",
      "Epoch 87/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2007 - accuracy: 0.9300\n",
      "Epoch 88/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.2000 - accuracy: 0.9300\n",
      "Epoch 89/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1991 - accuracy: 0.9300\n",
      "Epoch 90/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1993 - accuracy: 0.9100\n",
      "Epoch 91/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1956 - accuracy: 0.9400\n",
      "Epoch 92/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1919 - accuracy: 0.9300\n",
      "Epoch 93/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1933 - accuracy: 0.9300\n",
      "Epoch 94/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1879 - accuracy: 0.9300\n",
      "Epoch 95/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1875 - accuracy: 0.9300\n",
      "Epoch 96/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1839 - accuracy: 0.9500\n",
      "Epoch 97/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1826 - accuracy: 0.9300\n",
      "Epoch 98/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1811 - accuracy: 0.9400\n",
      "Epoch 99/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1814 - accuracy: 0.9200\n",
      "Epoch 100/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1771 - accuracy: 0.9400\n",
      "Epoch 101/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1756 - accuracy: 0.9200\n",
      "Epoch 102/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1713 - accuracy: 0.9500\n",
      "Epoch 103/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1705 - accuracy: 0.9500\n",
      "Epoch 104/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1669 - accuracy: 0.9500\n",
      "Epoch 105/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1670 - accuracy: 0.9400\n",
      "Epoch 106/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.1634 - accuracy: 0.9400\n",
      "Epoch 107/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1616 - accuracy: 0.9500\n",
      "Epoch 108/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1628 - accuracy: 0.9600\n",
      "Epoch 109/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1572 - accuracy: 0.9400\n",
      "Epoch 110/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1545 - accuracy: 0.9600\n",
      "Epoch 111/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1524 - accuracy: 0.9500\n",
      "Epoch 112/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1516 - accuracy: 0.9400\n",
      "Epoch 113/300\n",
      "100/100 [==============================] - 0s 4ms/step - loss: 0.1479 - accuracy: 0.9500\n",
      "Epoch 114/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1471 - accuracy: 0.9500\n",
      "Epoch 115/300\n",
      "100/100 [==============================] - 1s 13ms/step - loss: 0.1449 - accuracy: 0.9500 0s - loss: 0.1104 - accu\n",
      "Epoch 116/300\n",
      "100/100 [==============================] - 2s 19ms/step - loss: 0.1416 - accuracy: 0.9500\n",
      "Epoch 117/300\n",
      "100/100 [==============================] - 1s 14ms/step - loss: 0.1401 - accuracy: 0.9500\n",
      "Epoch 118/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1383 - accuracy: 0.9600\n",
      "Epoch 119/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1362 - accuracy: 0.9500\n",
      "Epoch 120/300\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.1351 - accuracy: 0.9500\n",
      "Epoch 121/300\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.1329 - accuracy: 0.9700\n",
      "Epoch 122/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1308 - accuracy: 0.9700\n",
      "Epoch 123/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1308 - accuracy: 0.9600: 0s - loss: 0.100\n",
      "Epoch 124/300\n",
      "100/100 [==============================] - 1s 12ms/step - loss: 0.1270 - accuracy: 0.9600\n",
      "Epoch 125/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1243 - accuracy: 0.9700\n",
      "Epoch 126/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.1204 - accuracy: 0.9700\n",
      "Epoch 127/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1210 - accuracy: 0.9600\n",
      "Epoch 128/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1186 - accuracy: 0.9600\n",
      "Epoch 129/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1164 - accuracy: 0.9700\n",
      "Epoch 130/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1149 - accuracy: 0.9700\n",
      "Epoch 131/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1118 - accuracy: 0.9700\n",
      "Epoch 132/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1135 - accuracy: 0.9600\n",
      "Epoch 133/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.1072 - accuracy: 0.9700\n",
      "Epoch 134/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1079 - accuracy: 0.9700\n",
      "Epoch 135/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1061 - accuracy: 0.9700\n",
      "Epoch 136/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.1032 - accuracy: 0.9700\n",
      "Epoch 137/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.1010 - accuracy: 0.9700\n",
      "Epoch 138/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.0989 - accuracy: 0.9800\n",
      "Epoch 139/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0974 - accuracy: 0.9700\n",
      "Epoch 140/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0970 - accuracy: 0.9700\n",
      "Epoch 141/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0924 - accuracy: 0.9700\n",
      "Epoch 142/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0924 - accuracy: 0.9800\n",
      "Epoch 143/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0886 - accuracy: 0.9800\n",
      "Epoch 144/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0874 - accuracy: 0.9700\n",
      "Epoch 145/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0846 - accuracy: 0.9800\n",
      "Epoch 146/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0835 - accuracy: 0.9800\n",
      "Epoch 147/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0821 - accuracy: 0.9800\n",
      "Epoch 148/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0801 - accuracy: 0.9800\n",
      "Epoch 149/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0796 - accuracy: 0.9800\n",
      "Epoch 150/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.0761 - accuracy: 0.9900\n",
      "Epoch 151/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0739 - accuracy: 0.9800\n",
      "Epoch 152/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0727 - accuracy: 0.9900\n",
      "Epoch 153/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0724 - accuracy: 0.9800\n",
      "Epoch 154/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0691 - accuracy: 0.9900\n",
      "Epoch 155/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0683 - accuracy: 0.9900\n",
      "Epoch 156/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0668 - accuracy: 0.9900\n",
      "Epoch 157/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0657 - accuracy: 0.9900\n",
      "Epoch 158/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0626 - accuracy: 0.9900\n",
      "Epoch 159/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0620 - accuracy: 0.9900\n",
      "Epoch 160/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0611 - accuracy: 0.9900\n",
      "Epoch 161/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0593 - accuracy: 0.9900\n",
      "Epoch 162/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0580 - accuracy: 0.9900\n",
      "Epoch 163/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0568 - accuracy: 1.0000\n",
      "Epoch 164/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0562 - accuracy: 0.9900\n",
      "Epoch 165/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0529 - accuracy: 1.0000\n",
      "Epoch 166/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0505 - accuracy: 1.0000\n",
      "Epoch 167/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0499 - accuracy: 0.9900\n",
      "Epoch 168/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0478 - accuracy: 1.0000\n",
      "Epoch 169/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0465 - accuracy: 1.0000\n",
      "Epoch 170/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0466 - accuracy: 1.0000\n",
      "Epoch 171/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0438 - accuracy: 1.0000\n",
      "Epoch 172/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0445 - accuracy: 1.0000\n",
      "Epoch 173/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0422 - accuracy: 1.0000\n",
      "Epoch 174/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0410 - accuracy: 1.0000\n",
      "Epoch 175/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0399 - accuracy: 1.0000\n",
      "Epoch 176/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0392 - accuracy: 1.0000\n",
      "Epoch 177/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0372 - accuracy: 1.0000\n",
      "Epoch 178/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0359 - accuracy: 1.0000\n",
      "Epoch 179/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0357 - accuracy: 1.0000\n",
      "Epoch 180/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0346 - accuracy: 1.0000\n",
      "Epoch 181/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0336 - accuracy: 1.0000\n",
      "Epoch 182/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0321 - accuracy: 1.0000\n",
      "Epoch 183/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0307 - accuracy: 1.0000\n",
      "Epoch 184/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0302 - accuracy: 1.0000\n",
      "Epoch 185/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0297 - accuracy: 1.0000\n",
      "Epoch 186/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0296 - accuracy: 1.0000\n",
      "Epoch 187/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0272 - accuracy: 1.0000\n",
      "Epoch 188/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0271 - accuracy: 1.0000\n",
      "Epoch 189/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0263 - accuracy: 1.0000\n",
      "Epoch 190/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0256 - accuracy: 1.0000\n",
      "Epoch 191/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0254 - accuracy: 1.0000\n",
      "Epoch 192/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0234 - accuracy: 1.0000\n",
      "Epoch 193/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0229 - accuracy: 1.0000\n",
      "Epoch 194/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0222 - accuracy: 1.0000\n",
      "Epoch 195/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0218 - accuracy: 1.0000\n",
      "Epoch 196/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0213 - accuracy: 1.0000\n",
      "Epoch 197/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0203 - accuracy: 1.0000\n",
      "Epoch 198/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0196 - accuracy: 1.0000\n",
      "Epoch 199/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0192 - accuracy: 1.0000\n",
      "Epoch 200/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0186 - accuracy: 1.0000\n",
      "Epoch 201/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0182 - accuracy: 1.0000\n",
      "Epoch 202/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0184 - accuracy: 1.0000\n",
      "Epoch 203/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0167 - accuracy: 1.0000\n",
      "Epoch 204/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0163 - accuracy: 1.0000\n",
      "Epoch 205/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0159 - accuracy: 1.0000\n",
      "Epoch 206/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0150 - accuracy: 1.0000\n",
      "Epoch 207/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0151 - accuracy: 1.0000\n",
      "Epoch 208/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0144 - accuracy: 1.0000\n",
      "Epoch 209/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0140 - accuracy: 1.0000\n",
      "Epoch 210/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0134 - accuracy: 1.0000\n",
      "Epoch 211/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0131 - accuracy: 1.0000\n",
      "Epoch 212/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0131 - accuracy: 1.0000\n",
      "Epoch 213/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0124 - accuracy: 1.0000\n",
      "Epoch 214/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0120 - accuracy: 1.0000\n",
      "Epoch 215/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0116 - accuracy: 1.0000\n",
      "Epoch 216/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0111 - accuracy: 1.0000\n",
      "Epoch 217/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0112 - accuracy: 1.0000\n",
      "Epoch 218/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0104 - accuracy: 1.0000\n",
      "Epoch 219/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0103 - accuracy: 1.0000\n",
      "Epoch 220/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0102 - accuracy: 1.0000\n",
      "Epoch 221/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0096 - accuracy: 1.0000\n",
      "Epoch 222/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0092 - accuracy: 1.0000\n",
      "Epoch 223/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0089 - accuracy: 1.0000\n",
      "Epoch 224/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0088 - accuracy: 1.0000\n",
      "Epoch 225/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0085 - accuracy: 1.0000\n",
      "Epoch 226/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0083 - accuracy: 1.0000\n",
      "Epoch 227/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0080 - accuracy: 1.0000\n",
      "Epoch 228/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0077 - accuracy: 1.0000\n",
      "Epoch 229/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0074 - accuracy: 1.0000\n",
      "Epoch 230/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0072 - accuracy: 1.0000\n",
      "Epoch 231/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0070 - accuracy: 1.0000\n",
      "Epoch 232/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0069 - accuracy: 1.0000\n",
      "Epoch 233/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0066 - accuracy: 1.0000\n",
      "Epoch 234/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0063 - accuracy: 1.0000\n",
      "Epoch 235/300\n",
      "100/100 [==============================] - 1s 9ms/step - loss: 0.0062 - accuracy: 1.0000\n",
      "Epoch 236/300\n",
      "100/100 [==============================] - 1s 8ms/step - loss: 0.0060 - accuracy: 1.0000\n",
      "Epoch 237/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0058 - accuracy: 1.0000\n",
      "Epoch 238/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0056 - accuracy: 1.0000\n",
      "Epoch 239/300\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0054 - accuracy: 1.0000\n",
      "Epoch 240/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0052 - accuracy: 1.0000\n",
      "Epoch 241/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0051 - accuracy: 1.0000\n",
      "Epoch 242/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0049 - accuracy: 1.0000\n",
      "Epoch 243/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0048 - accuracy: 1.0000\n",
      "Epoch 244/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0045 - accuracy: 1.0000\n",
      "Epoch 245/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0045 - accuracy: 1.0000\n",
      "Epoch 246/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0044 - accuracy: 1.0000\n",
      "Epoch 247/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0041 - accuracy: 1.0000\n",
      "Epoch 248/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0041 - accuracy: 1.0000\n",
      "Epoch 249/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0038 - accuracy: 1.0000\n",
      "Epoch 250/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0038 - accuracy: 1.0000\n",
      "Epoch 251/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0036 - accuracy: 1.0000\n",
      "Epoch 252/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0036 - accuracy: 1.0000\n",
      "Epoch 253/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0034 - accuracy: 1.0000\n",
      "Epoch 254/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0032 - accuracy: 1.0000\n",
      "Epoch 255/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0032 - accuracy: 1.0000\n",
      "Epoch 256/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0031 - accuracy: 1.0000\n",
      "Epoch 257/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0029 - accuracy: 1.0000\n",
      "Epoch 258/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0029 - accuracy: 1.0000\n",
      "Epoch 259/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0028 - accuracy: 1.0000\n",
      "Epoch 260/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0027 - accuracy: 1.0000\n",
      "Epoch 261/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0026 - accuracy: 1.0000\n",
      "Epoch 262/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0025 - accuracy: 1.0000\n",
      "Epoch 263/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0025 - accuracy: 1.0000\n",
      "Epoch 264/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0023 - accuracy: 1.0000\n",
      "Epoch 265/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0023 - accuracy: 1.0000\n",
      "Epoch 266/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0022 - accuracy: 1.0000\n",
      "Epoch 267/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0021 - accuracy: 1.0000\n",
      "Epoch 268/300\n",
      "100/100 [==============================] - 1s 7ms/step - loss: 0.0021 - accuracy: 1.0000\n",
      "Epoch 269/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0020 - accuracy: 1.0000\n",
      "Epoch 270/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0019 - accuracy: 1.0000\n",
      "Epoch 271/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0019 - accuracy: 1.0000\n",
      "Epoch 272/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0018 - accuracy: 1.0000\n",
      "Epoch 273/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0017 - accuracy: 1.0000\n",
      "Epoch 274/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0017 - accuracy: 1.0000\n",
      "Epoch 275/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0016 - accuracy: 1.0000\n",
      "Epoch 276/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0016 - accuracy: 1.0000\n",
      "Epoch 277/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 0.0015 - accuracy: 1.0000\n",
      "Epoch 278/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0015 - accuracy: 1.0000\n",
      "Epoch 279/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0014 - accuracy: 1.0000\n",
      "Epoch 280/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0014 - accuracy: 1.0000\n",
      "Epoch 281/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0013 - accuracy: 1.0000\n",
      "Epoch 282/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0013 - accuracy: 1.0000\n",
      "Epoch 283/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0012 - accuracy: 1.0000\n",
      "Epoch 284/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0012 - accuracy: 1.0000\n",
      "Epoch 285/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0012 - accuracy: 1.0000\n",
      "Epoch 286/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0011 - accuracy: 1.0000\n",
      "Epoch 287/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 0.0011 - accuracy: 1.0000\n",
      "Epoch 288/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 0.0010 - accuracy: 1.0000\n",
      "Epoch 289/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 9.9141e-04 - accuracy: 1.0000\n",
      "Epoch 290/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 9.5836e-04 - accuracy: 1.0000\n",
      "Epoch 291/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 9.3274e-04 - accuracy: 1.0000\n",
      "Epoch 292/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 8.8628e-04 - accuracy: 1.0000\n",
      "Epoch 293/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 8.6249e-04 - accuracy: 1.0000\n",
      "Epoch 294/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 8.3880e-04 - accuracy: 1.0000\n",
      "Epoch 295/300\n",
      "100/100 [==============================] - 1s 6ms/step - loss: 8.1138e-04 - accuracy: 1.0000\n",
      "Epoch 296/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 7.7186e-04 - accuracy: 1.0000\n",
      "Epoch 297/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 7.5180e-04 - accuracy: 1.0000\n",
      "Epoch 298/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 7.2199e-04 - accuracy: 1.0000\n",
      "Epoch 299/300\n",
      "100/100 [==============================] - 0s 5ms/step - loss: 6.9503e-04 - accuracy: 1.0000\n",
      "Epoch 300/300\n",
      "100/100 [==============================] - 1s 5ms/step - loss: 6.8743e-04 - accuracy: 1.0000\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.callbacks.History at 0x1a3add7860>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_h2_many = create_model_h2_many()\n",
    "model_h2_many.fit(X, Y, epochs=300, batch_size=1, verbose=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Get the trained weights and use them to calculate the output of the second hidden layer:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "Z1 = [0]*len(X)\n",
    "Z2 = [0]*len(X)\n",
    "\n",
    "W1, b1 = model_h2_many.layers[0].get_weights()\n",
    "W2, b2 = model_h2_many.layers[1].get_weights()\n",
    "W3, b3 = model_h2_many.layers[2].get_weights()\n",
    "\n",
    "for i in range(len(X)):\n",
    "    x = X[i]\n",
    "    z = np.maximum(np.matmul(np.transpose(W1), x) + b1, 0)\n",
    "    Z1[i], Z2[i] = np.maximum(np.matmul(np.transpose(W2), z) + b2, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Eh8fj763JbnJGb9o+duCZnuArs65j864cC6hL1pKbrBo0SJ69OjBN998Q0REBI8//jjPPvsshQsX9jqa5FPZ9kXLTNKAMWZ2XxYre/tcwonI2bv22mtJSkrir3/9KwAvvPACNWvWZMmSJWd4pIi3zqVgfgSaAX3N7JmT7rsy2xKJyO8UKVKEl156iWXLlhETE8PmzZu55ppreOihhzh48KDX8USydE6n63fObQUaA63NbJyZ6XT/IjmoQYMGrFmzhoEDBxIVFcWYMWOIjY1l7ty5XkcT+Z1zKQgDcM79DFwHlANmm1kRsv4eioiEQIECBXjmmWdYs2YN8fHxbNu2jeuvv567776bn3/+2et4Ir85l4JZ++sV51wq0BHYAXwGlMjeWCJyJjVq1ODLL7/khRdeoFChQkyePBmfz8f06dN1uhkJC2ddMM657ifdznDOPUDgMGX9NoyIB6Kioujbty9JSUk0a9aMXbt2cfvtt9OpUyd+/PFHr+NJPveH96E4555FBSPiqWrVqrFo0SLGjBlD8eLFee+99/D5fEyYMEFbM+KZbNlJ75z7LjueR0TOX0REBD179iQlJYV27dqxf/9+unfvTps2bdi6davX8SQf0lFgInlM5cqV+eijj5g8eTKlS5dmwYIFxMbG8q9//YuMjAyv40k+ooIRyYPMjC5durBhwwZuv/12jhw5wiOPPEKzZs3YuHGj1/Ekn1DBiORh5cqV45133uG9996jfPnyfPHFF8TFxfH888+TlpbmdTzJ41QwIvlAx44d8fv9dO/enWPHjtG/f38aNGjA2rVrz/xgkfOkghHJJ0qVKsX48eOZP38+VapUYe3atdSrV4+///3vpKameh1P8iAVjEg+06pVK9avX88jjzxCRkYGzz33HLVr12bZsmVeR5M8RgUjkg8VK1aMESNGsHTpUq666io2btxIkyZNePTRRzl8+LDX8SSPUMGI5GONGzdm7dq19O/fn4iICEaOHEmNGjVYsGCB19EkD1DBiORzhQoVYsiQIaxatYq4uDi2bt1K69at6d69O/v27fM6nuRiKhgRAaB27dqsXLmS5557joIFCzJhwgR8Ph/vv/++19Ekl1LBiMhvoqOj6devH4mJiTRu3JidO3dy8803c/vtt/PTTz95HU9yGRWMiPzOVVddxZIlSxg5ciRFixZl+vTp+Hw+/vOf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REQE999/P36/n/bt23PgwAHuu+8+Wrduzbfffut1vGylghER8UClSpX44IMPmDJlCmXKlGHhwoXExsYycuTIPHPyTBWMiIhHzIy77roLv99P586dOXr0KI8++ijNmjVjw4YNXsf7w1QwIiIeK1euHG+//TazZs2iQoUKLFu2jLi4OIYMGUJaWprX8c6bCkZEJEzceOON+P1+7r33Xo4fP86AAQOoX78+a9eu9TraeVHBiIiEkZIlSzJu3DgWLlxI1apVSUxMpF69evTr14/U1FSv450TFYyISBhq0aIF69ev57HHHiMjI4OhQ4dSq1YtPv/8c6+jnTUVjIhImCpatCgvv/wyX3zxBdWrV2fTpk00a9aM3r17c/jwYa/jnZEKRkQkzDVq1Ii1a9cyYMAAIiMjGTVqFLGxscyfP9/raKelghERyQUKFizI4MGDWbVqFXXq1OG7776jTZs23HPPPezbt8/reFlSwYiI5CJxcXGsWLGCoUOHUrBgQSZOnIjP5+Pdd9/1OtrvqGBERHKZqKgonnzySdatW0eTJk3YuXMnnTp14rbbbuOnn37yOt5vVDAiIrnUlVdeyeLFixk1ahTFihVjxowZVK9enTfffDMsTp6pghERycUiIiLo1asXycnJtGnThn379tG1a1euv/56vv/+e2+zebp2ERHJFpdeeilz585l4sSJlCpVio8//piYmBhGjx5NRkaGJ5lUMCIieYSZ0bVrV/x+P506deLw4cP06tWL5s2bs2nTphzPo4IREcljypcvz4wZM5gxYwYXXXQRS5cupVatWvzzn/8kPT09x3KoYERE8qhOnTrh9/vp2rUrqampPPnkkzRs2JCkpKQcWb8KRkQkDytdujQTJ07k448/5pJLLmH16tXUrVuX5557LuTrVsGIiOQDbdq0ITk5mV69epGenk50dHTI12nhcKy0V+Lj411CQoLXMUREctTKlSupU6cOUVFR5/V4M1vtnIs/03Ln9+wiIpJr1a9fP0fWoykyEREJCRWMiIiEhApGRERCQgUjIiIhoYIREZGQUMGIiEhIqGBERCQk8vUXLc1sN/DdH3iKC4E92RQnVJQxeyhj9lDG7OF1xkudc2XPtFC+Lpg/yswSzubbrF5SxuyhjNlDGbNHbsgImiITEZEQUcGIiEhIqGD+mLFeBzgLypg9lDF7KGP2yA0ZtQ9GRERCQ1swIiISEiqY82Bmbc3sKzPbbGZPeZ0nK2b2bzPbZWbJXmfJiplVNrNFZrbBzFLM7FGvM53MzAqZ2UozWxfM+KzXmU7FzCLNbK2Zfeh1llMxs61mtt7MEs0s7H6IycxKmtkMM9sY/HfZyOtMJzOzK4Ov36+Xg2b2mNe5TkVTZOfIzCKBTUArYDuwCrjTOef3NNhJzKwZcBh40zkX63Wek5lZBaCCc26NmRUHVgMdw+l1NDMDijrnDptZNPA58KhzbrnH0X7HzP4KxAMlnHM3eJ0nK2a2FYh3zoXld0zMbBKw1Dk3zswKAEWcc/u9znUqwfeiHUAD59wf+T5fyGgL5tzVBzY757Y4544DU4GbPM70O865JcBer3OcinPuR+fcmuD1Q8AGoKK3qf6XCzgcvBkdvITdJzIzqwS0B8Z5nSW3MrMSQDNgPIBz7ng4l0tQC+CbcC0XUMGcj4rAtky3txNmb4y5jZlVAWoDK7xN8nvBqadEYBewwDkXdhmBV4AngAyvg5yBA+ab2Wozu9/rMCe5DNgNTAhONY4zs6JehzqDzsDbXoc4HRXMubMsxsLuU21uYWbFgJnAY865g17nOZlz7oRzLg6oBNQ3s7CabjSzG4BdzrnVXmc5C42dc3WAdkCv4DRuuIgC6gBjnHO1gSNAWO5fBQhO4d0ITPc6y+moYM7ddqByptuVgB88ypKrBfdrzASmOOfe9TrP6QSnSz4D2noc5WSNgRuD+zemAteZ2X+8jZQ159wPwT93Ae8RmG4OF9uB7Zm2UGcQKJxw1Q5Y45z7yesgp6OCOXergGpmVjX4KaIzMNvjTLlOcAf6eGCDc26413myYmZlzaxk8HphoCWw0dtU/8s51885V8k5V4XAv8VPnXNdPI71O2ZWNHgwB8Gpp9ZA2Bzh6JzbCWwzsyuDQy2AsDngJAt3EubTYxDYLJRz4JxLN7OHgXlAJPBv51yKx7F+x8zeBpoDF5rZdmCgc268t6n+R2PgL8D64D4OgP7OuTkeZjpZBWBS8GidCGCacy5sDwMOcxcB7wU+VxAFvOWc+9jbSL/TG5gS/OC4BbjH4zxZMrMiBI5ifcDrLGeiw5RFRCQkNEUmIiIhoYIREZGQUMGIiEhIqGBERCQkVDAiIhISKhgREQkJFYyIiISECkYkDJnZCDMrYmYdzewNM5tlZq2D99U1s7D/kp2ICkYkzJhZaQK/FnDUOfe+c64H0A24g8Adq4GmHkYUOSs6VYyIR8xsAoGfKfhVeaAAcCu/Pw/WAODVTLdTzeyicD/ZoeRvKhgRjzjnfjvXlZlVBZYC9wOlgf3BcQOGAnN//YG2oH1ACUAFI2FLU2QiHjOzMsDHwGDn3GwCP8ldJXh3bwJncb7VzHpmelhF4PuczClyrrQFI+Kh4M8AfEjgTM2vB4fXAw8BOOdGAiNPekwx4KBz7lhOZhU5VzqbsohHgj8D8B7wc+bpsuB9TYHVzrmjWTzuCuCEc+6bnEkqcn5UMCIeMbPXgUuADs65dK/ziGQ37YMR8YCZDQTqAredXC5mdpmZjTezGd6kE8ke2oIRyWFmVgX4FtgKHMh011fOuTsyLTfDOXdrjoYTyUbayS+Sw5xzWwHzOodIqGmKTEREQkIFIxJmzKyMmb0G1Dazfl7nETlf2gcjIiIhoS0YEREJCRWMiIiEhApGRERCQgUjIiIhoYIREZGQUMGIiEhIqGBERCQkVDAiIhISKhgREQmJ/wdrooRjJLteMAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(Z1, Z2, s=30, color=colors[Y])\n",
    "\n",
    "W3 = W3.ravel()\n",
    "z1_min = min(Z1)\n",
    "z1_max = max(Z1)\n",
    "\n",
    "z1 = -(b3 + W3[0]*z1_min) / W3[1]\n",
    "z2 = -(b3 + W3[0]*z1_max) / W3[1]\n",
    "\n",
    "plt.plot([z1_min, z1_max], [z1, z2], color='k', linestyle='-', linewidth=2)\n",
    "plt.xlabel(r'$Z^{(2)}_1$')\n",
    "plt.ylabel(r'$Z^{(2)}_2$');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_surface(X, model_h2_many, 0.01);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Questions/Exercises"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1) Did we need more than one hidden layer to perfectly classify? If not, why might multiple hidden layers be useful for other datasets?\n",
    "\n",
    "2) Why not use a very large number of neurons since it's clear that the classification accuracy improves with more degrees of freedom?\n",
    "\n",
    "3) Repeat the plotting of the hyperplane, in Part 1b, only without the ReLU function (i.e. max(x, 0) function). Why is an activation function needed?"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
